@@ -3375,12 +3375,15 @@ int loadClass(classObj *class, layerObj *layer)
33753375static int classResolveSymbolNames (classObj * class )
33763376{
33773377 int i ,j ;
3378+ int try_addimage_if_notfound = MS_TRUE ;
3379+
3380+ if (msyysource == MS_URL_TOKENS ) try_addimage_if_notfound = MS_FALSE ;
33783381
33793382 /* step through styles and labels to resolve symbol names */
33803383 /* class styles */
33813384 for (i = 0 ; i < class -> numstyles ; i ++ ) {
33823385 if (class -> styles [i ]-> symbolname ) {
3383- if ((class -> styles [i ]-> symbol = msGetSymbolIndex (& (class -> layer -> map -> symbolset ), class -> styles [i ]-> symbolname , MS_TRUE )) == -1 ) {
3386+ if ((class -> styles [i ]-> symbol = msGetSymbolIndex (& (class -> layer -> map -> symbolset ), class -> styles [i ]-> symbolname , try_addimage_if_notfound )) == -1 ) {
33843387 msSetError (MS_MISCERR , "Undefined symbol \"%s\" in class, style %d of layer %s." , "classResolveSymbolNames()" , class -> styles [i ]-> symbolname , i , class -> layer -> name );
33853388 return MS_FAILURE ;
33863389 }
@@ -3391,7 +3394,7 @@ static int classResolveSymbolNames(classObj *class)
33913394 for (i = 0 ; i < class -> numlabels ; i ++ ) {
33923395 for (j = 0 ; j < class -> labels [i ]-> numstyles ; j ++ ) {
33933396 if (class -> labels [i ]-> styles [j ]-> symbolname ) {
3394- if ((class -> labels [i ]-> styles [j ]-> symbol = msGetSymbolIndex (& (class -> layer -> map -> symbolset ), class -> labels [i ]-> styles [j ]-> symbolname , MS_TRUE )) == -1 ) {
3397+ if ((class -> labels [i ]-> styles [j ]-> symbol = msGetSymbolIndex (& (class -> layer -> map -> symbolset ), class -> labels [i ]-> styles [j ]-> symbolname , try_addimage_if_notfound )) == -1 ) {
33953398 msSetError (MS_MISCERR , "Undefined symbol \"%s\" in class, label style %d of layer %s." , "classResolveSymbolNames()" , class -> labels [i ]-> styles [j ]-> symbolname , j , class -> layer -> name );
33963399 return MS_FAILURE ;
33973400 }
@@ -6738,22 +6741,9 @@ int msUpdateMapFromURL(mapObj *map, char *variable, char *string)
67386741 if (msUpdateLayerFromString ((GET_LAYER (map , i )), string , MS_TRUE ) != MS_SUCCESS ) return MS_FAILURE ;
67396742 }
67406743
6741- /* make sure any symbol names for this layer have been resolved (bug #2700) */
6742- for (j = 0 ; j < GET_LAYER (map , i )-> numclasses ; j ++ ) {
6743- for (k = 0 ; k < GET_LAYER (map , i )-> class [j ]-> numstyles ; k ++ ) {
6744- if (GET_LAYER (map , i )-> class [j ]-> styles [k ]-> symbolname && GET_LAYER (map , i )-> class [j ]-> styles [k ]-> symbol == 0 ) {
6745- if ((GET_LAYER (map , i )-> class [j ]-> styles [k ]-> symbol = msGetSymbolIndex (& (map -> symbolset ), GET_LAYER (map , i )-> class [j ]-> styles [k ]-> symbolname , MS_TRUE )) == -1 ) {
6746- msSetError (MS_MISCERR , "Undefined symbol \"%s\" in class %d, style %d of layer %s." , "msUpdateMapFromURL()" , GET_LAYER (map , i )-> class [j ]-> styles [k ]-> symbolname , j , k , GET_LAYER (map , i )-> name );
6747- return MS_FAILURE ;
6748- }
6749- }
6750- if (!MS_IS_VALID_ARRAY_INDEX (GET_LAYER (map , i )-> class [j ]-> styles [k ]-> symbol , map -> symbolset .numsymbols )) {
6751- msSetError (MS_MISCERR , "Invalid symbol index in class %d, style %d of layer %s." , "msUpdateMapFromURL()" , j , k , GET_LAYER (map , i )-> name );
6752- return MS_FAILURE ;
6753- }
6754- }
6755- }
6756-
6744+ // make sure symbols are resolved
6745+ if (resolveSymbolNames (map ) == MS_FAILURE ) return MS_FAILURE ;
6746+
67576747 break ;
67586748 case (LEGEND ):
67596749 if (msyylex () == LABEL ) {
0 commit comments