diff --git a/cint/src/v6_struct.cxx b/cint/src/v6_struct.cxx
index b9452a8aa3aaf03ba4dd5d64051e11f596a9b7dd..cac39c3d3090113ec817dee73561b00007be165d 100644
--- a/cint/src/v6_struct.cxx
+++ b/cint/src/v6_struct.cxx
@@ -476,8 +476,13 @@ int G__class_autoloading(int tagnum)
          int res = (*G__p_class_autoloading)(G__fulltagname(tagnum, 1), copyLibname);
          if (G__struct.type[tagnum] == G__CLASS_AUTOLOAD) {
             if (strstr(G__struct.name[tagnum],"<") != 0) {
-               // Kill this entry.      
+               // Kill this entry.
+               int store_def_tagnum = G__def_tagnum;
+               int store_tagdefining = G__tagdefining;
+               G__tagdefining = G__def_tagnum = G__struct.parent_tagnum[tagnum];
                int found_tagnum = G__defined_tagname(G__struct.name[tagnum],3);
+               G__def_tagnum = store_def_tagnum;
+               G__tagdefining = store_tagdefining;
                if (found_tagnum != tagnum) {
                   // The autoload has seemingly failed!
                   // This can happens in 'normal' case if the string representation of the