Bladeren bron

fix: 修复makeVarToProtectVarSpace的错误

makeVarToProtectVarSpace会使非保护空间变成保护空间
SongZihuan 3 jaren geleden
bovenliggende
commit
5831147fb1
2 gewijzigde bestanden met toevoegingen van 3 en 2 verwijderingen
  1. 2 1
      src/core/var.c
  2. 1 1
      test/src/run_code.c

+ 2 - 1
src/core/var.c

@@ -317,6 +317,7 @@ bool makeVarToVarSpaceList(char *name, char p_self, char p_posterity, char p_ext
  */
 bool makeVarToProtectVarSpace(char *name, char p_self, char p_posterity, char p_external, af_Object *obj, af_Environment *env){
     pthread_rwlock_wrlock(&env->protect->lock);
+    bool is_protect = env->protect->is_protect;
     env->protect->is_protect = false;
     pthread_rwlock_unlock(&env->protect->lock);
 
@@ -327,7 +328,7 @@ bool makeVarToProtectVarSpace(char *name, char p_self, char p_posterity, char p_
         gc_delReference(var, env);
 
     pthread_rwlock_wrlock(&env->protect->lock);
-    env->protect->is_protect = true;
+    env->protect->is_protect = is_protect;
     pthread_rwlock_unlock(&env->protect->lock);
     return re;
 }

+ 1 - 1
test/src/run_code.c

@@ -1145,7 +1145,7 @@ INIT_ERROR:
 
     {
         printf("TAG S: [string]\n");
-        int exit_code = runCodeFromString("object\ndata\n{func-normal}\nglobal\n", "Tags-string.aun", 1, env);
+        int exit_code = runCodeFromString("str\ndata\n{func-normal}\nglobal\n", "Tags-string.aun", 1, env);
         printf("exit code = %d\n\n", exit_code);
     }