|
1 | 1 | #include <stddef.h>
|
2 | 2 | #include <stdlib.h>
|
| 3 | +#include <string.h> |
3 | 4 |
|
4 |
| -int* xlua_hotfix_flags = NULL; |
| 5 | +bool* xlua_hotfix_flags = NULL; |
5 | 6 | int xlua_hotfix_flags_len = 0;
|
6 | 7 |
|
7 |
| -extern "C" { |
| 8 | +extern "C" |
| 9 | +{ |
| 10 | + int xlua_get_hotfix_flag(int idx) |
| 11 | + { |
| 12 | + if (idx >= xlua_hotfix_flags_len) |
| 13 | + { |
| 14 | + return 0; |
| 15 | + } |
| 16 | + else |
| 17 | + { |
| 18 | + return xlua_hotfix_flags[idx]; |
| 19 | + } |
| 20 | + } |
8 | 21 |
|
9 |
| -int xlua_get_hotfix_flag(int idx) { |
10 |
| - if (idx >= xlua_hotfix_flags_len) { |
11 |
| - return 0; |
12 |
| - } else { |
13 |
| - return xlua_hotfix_flags[idx]; |
14 |
| - } |
15 |
| -} |
| 22 | + void xlua_set_hotfix_flag(int idx, int flag) |
| 23 | + { |
| 24 | + if (idx >= xlua_hotfix_flags_len) |
| 25 | + { |
| 26 | + bool* new_hotfix_flags = (bool*)malloc(idx + 1); |
16 | 27 |
|
17 |
| -void xlua_set_hotfix_flag(int idx, int flag) { |
18 |
| - int i = 0; |
19 |
| - int* new_hotfix_flags = NULL; |
20 |
| - if (idx >= xlua_hotfix_flags_len) { |
21 |
| - if (xlua_hotfix_flags == NULL) { |
22 |
| - xlua_hotfix_flags = (int*)malloc((idx + 1) * sizeof(int)); |
23 |
| - } else { |
24 |
| - new_hotfix_flags = (int*)realloc(xlua_hotfix_flags, (idx + 1) * sizeof(int)); |
25 |
| - if (NULL == new_hotfix_flags) { // just skip operation |
26 |
| - return; |
27 |
| - } |
28 |
| - xlua_hotfix_flags = new_hotfix_flags; |
29 |
| - } |
30 |
| - for(i = xlua_hotfix_flags_len; i < (idx + 1); i++) { |
31 |
| - xlua_hotfix_flags[i] = 0; |
32 |
| - } |
33 |
| - xlua_hotfix_flags_len = idx + 1; |
34 |
| - } |
35 |
| - xlua_hotfix_flags[idx] = flag; |
36 |
| -} |
| 28 | + if (xlua_hotfix_flags == NULL) |
| 29 | + { |
| 30 | + memset(new_hotfix_flags, 0, (idx + 1)); |
| 31 | + xlua_hotfix_flags = new_hotfix_flags; |
| 32 | + } |
| 33 | + else |
| 34 | + { |
| 35 | + memcpy(new_hotfix_flags, xlua_hotfix_flags, xlua_hotfix_flags_len); |
| 36 | + memset(new_hotfix_flags + xlua_hotfix_flags_len, 0, (idx + 1 - xlua_hotfix_flags_len)); |
| 37 | + bool* tmp = xlua_hotfix_flags; |
| 38 | + xlua_hotfix_flags = new_hotfix_flags; |
| 39 | + free(tmp); |
| 40 | + } |
| 41 | + |
| 42 | + xlua_hotfix_flags_len = idx + 1; |
| 43 | + } |
| 44 | + |
| 45 | + xlua_hotfix_flags[idx] = flag; |
| 46 | + } |
37 | 47 | }
|
0 commit comments