@@ -414,7 +414,7 @@ void MCImage::reopen(bool p_newfile, bool p_lock_size)
414414
415415// //////////////////////////////////////////////////////////////////////////////
416416
417- bool MCImageGetFileRepForStackContext (MCStringRef p_filename , MCStack *p_stack, MCImageRep *&r_rep)
417+ bool MCImageGetRepForReferenceWithStackContext (MCStringRef p_reference , MCStack *p_stack, MCImageRep *&r_rep)
418418{
419419 bool t_success = true ;
420420
@@ -423,44 +423,55 @@ bool MCImageGetFileRepForStackContext(MCStringRef p_filename, MCStack *p_stack,
423423
424424 MCAutoStringRef t_prefixless;
425425 // skip over any file: / binfile: url prefix
426- if (MCStringBeginsWith (p_filename , MCSTR (" file:" ), kMCStringOptionCompareCaseless ))
426+ if (MCStringBeginsWith (p_reference , MCSTR (" file:" ), kMCStringOptionCompareCaseless ))
427427 {
428- MCStringCopySubstring (p_filename , MCRangeMake (5 , UINDEX_MAX), &t_prefixless);
429- p_filename = *t_prefixless;
428+ MCStringCopySubstring (p_reference , MCRangeMake (5 , UINDEX_MAX), &t_prefixless);
429+ p_reference = *t_prefixless;
430430 }
431- else if (MCStringBeginsWith (p_filename , MCSTR (" binfile:" ), kMCStringOptionCompareCaseless ))
431+ else if (MCStringBeginsWith (p_reference , MCSTR (" binfile:" ), kMCStringOptionCompareCaseless ))
432432 {
433- MCStringCopySubstring (p_filename , MCRangeMake (8 , UINDEX_MAX), &t_prefixless);
434- p_filename = *t_prefixless;
433+ MCStringCopySubstring (p_reference , MCRangeMake (8 , UINDEX_MAX), &t_prefixless);
434+ p_reference = *t_prefixless;
435435 }
436436
437- if (MCPathIsRemoteURL (p_filename))
438- t_success = MCImageRepGetReferenced (p_filename, t_rep);
437+ if (MCPathIsRemoteURL (p_reference))
438+ t_success = MCImageRepGetReferenced (p_reference, t_rep);
439+ else
440+ t_success = MCImageGetRepForFileWithStackContext (p_reference, p_stack, t_rep);
441+
442+ if (t_success)
443+ r_rep = t_rep;
444+
445+ return t_success;
446+ }
447+
448+ bool MCImageGetRepForFileWithStackContext (MCStringRef p_filename, MCStack *p_stack, MCImageRep *&r_rep)
449+ {
450+ bool t_success;
451+ t_success = true ;
452+
453+ MCImageRep *t_rep;
454+ t_rep = nil;
455+
456+ // with local filenames, first check if absolute path
457+ if (MCPathIsAbsolute (p_filename))
458+ t_success = MCImageRepGetDensityMapped (p_filename, t_rep);
439459 else
440460 {
441- // with local filenames, first check if absolute path
442- if (MCPathIsAbsolute (p_filename))
443- t_success = MCImageRepGetDensityMapped (p_filename, t_rep);
444- else
461+ // else try to resolve from stack file location
462+ MCAutoStringRef t_path;
463+ t_success = p_stack->resolve_relative_path (p_filename, &t_path);
464+ if (t_success)
465+ t_success = MCImageRepGetDensityMapped (*t_path, t_rep);
466+
467+ // else try to resolve from current folder
468+ if (t_success && t_rep == nil)
445469 {
446- // else try to resolve from stack file location
447- MCAutoStringRef t_path;
448- t_success = p_stack->resolve_relative_path (p_filename, &t_path);
470+ MCAutoStringRef t_resolved;
471+ t_success = MCS_resolvepath (p_filename, &t_resolved);
449472 if (t_success)
450- t_success = MCImageRepGetDensityMapped (*t_path, t_rep);
451-
452- // else try to resolve from current folder
453- if (t_success && t_rep == nil)
454- {
455- MCAutoStringRef t_resolved;
456- t_success = MCS_resolvepath (p_filename, &t_resolved);
457- if (t_success)
458- t_success = MCImageRepGetDensityMapped (*t_resolved, t_rep);
459- }
473+ t_success = MCImageRepGetDensityMapped (*t_resolved, t_rep);
460474 }
461- // AL-2014-01-17: [[ Bug 11684 ]] If image file isn't found, return false
462- if (t_success)
463- t_success = t_rep != nil;
464475 }
465476
466477 if (t_success)
@@ -469,7 +480,7 @@ bool MCImageGetFileRepForStackContext(MCStringRef p_filename, MCStack *p_stack,
469480 return t_success;
470481}
471482
472- bool MCImageGetFileRepForResource (MCStringRef p_resource_file, MCImageRep *&r_rep)
483+ bool MCImageGetRepForResource (MCStringRef p_resource_file, MCImageRep *&r_rep)
473484{
474485 MCAutoStringRef t_path;
475486 if (!MCResourceResolvePath (p_resource_file, &t_path))
0 commit comments