@@ -916,14 +916,25 @@ static bool MCS_apply_redirect(MCStringRef p_path, bool p_is_file, MCStringRef&
916916
917917 // Construct the new path from the path after MacOS/ inside Resources/_macos.
918918 MCAutoStringRef t_new_path;
919- MCRange t_cmd_range, t_path_range;
920- t_cmd_range = MCRangeMake (0 , t_engine_path_length - 6 );
921- t_path_range = MCRangeMake (t_engine_path_length + 1 , UINDEX_MAX);
922-
923- // AL-2014-09-19: Range argument to MCStringFormat is a pointer to an MCRange.
924- /* UNCHECKED */ MCStringFormat (&t_new_path, " %*@/Resources/_MacOS%*@" , &t_cmd_range, MCcmd, &t_path_range, p_path);
925-
926- if (p_is_file && !MCS_file_exists_at_path (*t_new_path))
919+ MCRange t_cmd_range = MCRangeMake (0 , t_engine_path_length - 6 );
920+ uindex_t t_path_end = MCStringGetLength (p_path);
921+ bool t_success = true ;
922+
923+ if (MCStringGetCodepointAtIndex (p_path, t_path_end) == ' /' )
924+ t_path_end--;
925+
926+ if (t_engine_path_length == t_path_end)
927+ {
928+ t_success = MCStringFormat (&t_new_path, " %*@/Resources/_MacOS" , &t_cmd_range, MCcmd);
929+ }
930+ else
931+ {
932+ MCRange t_path_range = MCRangeMakeMinMax (t_engine_path_length + 1 , t_path_end);
933+ // AL-2014-09-19: Range argument to MCStringFormat is a pointer to an MCRange.
934+ t_success = MCStringFormat (&t_new_path, " %*@/Resources/_MacOS/%*@" , &t_cmd_range, MCcmd, &t_path_range, p_path);
935+ }
936+
937+ if (!t_success || (p_is_file && !MCS_file_exists_at_path (*t_new_path)))
927938 return false ;
928939
929940 r_redirected = MCValueRetain (*t_new_path);
0 commit comments