I suggest using MCStringGetCString(p_source) directly here, rather than via a t_source temporary - this reinforces the fact that these need updated later, and stops doing anything you shouldn't with the CString ptr that is returned from MCStringGetCString.