| #include <stddef.h> | 
| #include <stdlib.h> | 
|   | 
| int* xlua_hotfix_flags = NULL; | 
| int xlua_hotfix_flags_len = 0; | 
|   | 
| extern "C" { | 
|   | 
| int xlua_get_hotfix_flag(int idx) { | 
|     if (idx >= xlua_hotfix_flags_len) { | 
|         return 0; | 
|     } else { | 
|         return xlua_hotfix_flags[idx]; | 
|     } | 
| } | 
|   | 
| void xlua_set_hotfix_flag(int idx, int flag) { | 
|     int i = 0; | 
|         int* new_hotfix_flags = NULL; | 
|     if (idx >= xlua_hotfix_flags_len) { | 
|         if (xlua_hotfix_flags == NULL) { | 
|             xlua_hotfix_flags = (int*)malloc((idx + 1) * sizeof(int)); | 
|         } else { | 
|             new_hotfix_flags = (int*)realloc(xlua_hotfix_flags, (idx + 1) * sizeof(int)); | 
|                         if (NULL == new_hotfix_flags) { // just skip operation | 
|                             return; | 
|                         } | 
|                         xlua_hotfix_flags = new_hotfix_flags; | 
|         } | 
|         for(i = xlua_hotfix_flags_len; i < (idx + 1); i++) { | 
|             xlua_hotfix_flags[i] = 0; | 
|         } | 
|                 xlua_hotfix_flags_len = idx + 1; | 
|     }  | 
|     xlua_hotfix_flags[idx] = flag; | 
| } | 
| } |