Jie Luo 7 жил өмнө
parent
commit
7b44b6d1a0

+ 7 - 9
python/google/protobuf/pyext/descriptor.cc

@@ -101,7 +101,13 @@ bool _CalledFromGeneratedFile(int stacklevel) {
   if (frame == NULL) {
   if (frame == NULL) {
     return false;
     return false;
   }
   }
-  
+  while (stacklevel-- > 0) {
+    frame = frame->f_back;
+    if (frame == NULL) {
+      return false;
+    }
+  }
+
   if (frame->f_code->co_filename == NULL) {
   if (frame->f_code->co_filename == NULL) {
     return false;
     return false;
   }
   }
@@ -113,12 +119,10 @@ bool _CalledFromGeneratedFile(int stacklevel) {
     PyErr_Clear();
     PyErr_Clear();
     return false;
     return false;
   }
   }
-  
   if ((filename_size < 3) || (strcmp(&filename[filename_size - 3], ".py") != 0)) {
   if ((filename_size < 3) || (strcmp(&filename[filename_size - 3], ".py") != 0)) {
     // Cython's stack does not have .py file name and is not at global module scope.
     // Cython's stack does not have .py file name and is not at global module scope.
     return true;
     return true;
   }
   }
-  
   if (filename_size < 7) {
   if (filename_size < 7) {
     // filename is too short.
     // filename is too short.
     return false;
     return false;
@@ -128,12 +132,6 @@ bool _CalledFromGeneratedFile(int stacklevel) {
     return false;
     return false;
   }
   }
   
   
-  while (stacklevel-- > 0) {
-    frame = frame->f_back;
-    if (frame == NULL) {
-      return false;
-    }
-  }
   if (frame->f_globals != frame->f_locals) {
   if (frame->f_globals != frame->f_locals) {
     // Not at global module scope
     // Not at global module scope
     return false;
     return false;