aboutsummaryrefslogtreecommitdiff
path: root/lobject.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2020-05-19 12:42:20 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2020-05-19 12:42:20 -0300
commit9514abc2da3525ef4314a8fcf70982ad07319e51 (patch)
treef3d30b28767cf1f3aedff7521ed1b83c9443c7cf /lobject.h
parent0be57b9b6d1a4ea8d41c9c9b9b434b4749ccbb27 (diff)
downloadlua-9514abc2da3525ef4314a8fcf70982ad07319e51.tar.gz
lua-9514abc2da3525ef4314a8fcf70982ad07319e51.tar.bz2
lua-9514abc2da3525ef4314a8fcf70982ad07319e51.zip
Cleaner definition for 'TString'
Use a variable-sized array to store string contents at the end of a structure 'TString', instead of raw memory.
Diffstat (limited to 'lobject.h')
-rw-r--r--lobject.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/lobject.h b/lobject.h
index 2d63c001..04a81d3d 100644
--- a/lobject.h
+++ b/lobject.h
@@ -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*/
361typedef struct TString { 361typedef 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 */