diff options
| -rw-r--r-- | lobject.h | 7 | ||||
| -rw-r--r-- | lstring.h | 6 |
2 files changed, 8 insertions, 5 deletions
| @@ -356,7 +356,7 @@ typedef struct GCObject { | |||
| 356 | 356 | ||
| 357 | 357 | ||
| 358 | /* | 358 | /* |
| 359 | ** Header for string value; string bytes follow the end of this structure. | 359 | ** Header for a string value. |
| 360 | */ | 360 | */ |
| 361 | typedef struct TString { | 361 | typedef struct TString { |
| 362 | CommonHeader; | 362 | CommonHeader; |
| @@ -367,16 +367,15 @@ typedef struct TString { | |||
| 367 | size_t lnglen; /* length for long strings */ | 367 | size_t lnglen; /* length for long strings */ |
| 368 | struct TString *hnext; /* linked list for hash table */ | 368 | struct TString *hnext; /* linked list for hash table */ |
| 369 | } u; | 369 | } u; |
| 370 | char contents[1]; | ||
| 370 | } TString; | 371 | } TString; |
| 371 | 372 | ||
| 372 | 373 | ||
| 373 | 374 | ||
| 374 | /* | 375 | /* |
| 375 | ** Get the actual string (array of bytes) from a 'TString'. | 376 | ** Get the actual string (array of bytes) from a 'TString'. |
| 376 | ** (Access to 'extra' ensures that value is really a 'TString'.) | ||
| 377 | */ | 377 | */ |
| 378 | #define getstr(ts) \ | 378 | #define getstr(ts) ((ts)->contents) |
| 379 | check_exp(sizeof((ts)->extra), cast_charp((ts)) + sizeof(TString)) | ||
| 380 | 379 | ||
| 381 | 380 | ||
| 382 | /* get the actual string (array of bytes) from a Lua value */ | 381 | /* get the actual string (array of bytes) from a Lua value */ |
| @@ -19,7 +19,11 @@ | |||
| 19 | #define MEMERRMSG "not enough memory" | 19 | #define MEMERRMSG "not enough memory" |
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | #define sizelstring(l) (sizeof(TString) + ((l) + 1) * sizeof(char)) | 22 | /* |
| 23 | ** Size of a TString: Size of the header plus space for the string | ||
| 24 | ** itself (including final '\0'). | ||
| 25 | */ | ||
| 26 | #define sizelstring(l) (offsetof(TString, contents) + ((l) + 1) * sizeof(char)) | ||
| 23 | 27 | ||
| 24 | #define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \ | 28 | #define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \ |
| 25 | (sizeof(s)/sizeof(char))-1)) | 29 | (sizeof(s)/sizeof(char))-1)) |
