diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-03-01 12:18:44 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-03-01 12:18:44 -0300 |
| commit | f69e0ade19af4d997f52c03881362a6961383487 (patch) | |
| tree | 4ee16763cb070c92e2d985bc3a57b73e99698b53 | |
| parent | 99a1c06ea34c823e7692deac3a23fec4831d8f79 (diff) | |
| download | lua-f69e0ade19af4d997f52c03881362a6961383487.tar.gz lua-f69e0ade19af4d997f52c03881362a6961383487.tar.bz2 lua-f69e0ade19af4d997f52c03881362a6961383487.zip | |
no need to store a full 'size_t' fo the size of (frequent) small strings
| -rw-r--r-- | ldump.c | 22 | ||||
| -rw-r--r-- | lundump.c | 10 |
2 files changed, 16 insertions, 16 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ldump.c,v 2.22 2014/02/28 12:25:12 roberto Exp roberto $ | 2 | ** $Id: ldump.c,v 2.23 2014/02/28 16:13:01 roberto Exp roberto $ |
| 3 | ** save precompiled Lua chunks | 3 | ** save precompiled Lua chunks |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -60,16 +60,16 @@ static void DumpInteger(lua_Integer x, DumpState* D) | |||
| 60 | 60 | ||
| 61 | static void DumpString(const TString* s, DumpState* D) | 61 | static void DumpString(const TString* s, DumpState* D) |
| 62 | { | 62 | { |
| 63 | if (s==NULL) | 63 | if (s==NULL) DumpByte(0,D); |
| 64 | { | 64 | else { |
| 65 | size_t size=0; | 65 | size_t size = s->tsv.len+1; /* include trailing '\0' */ |
| 66 | DumpVar(size,D); | 66 | if (size < 0xFF) DumpByte(size,D); |
| 67 | } | 67 | else |
| 68 | else | 68 | { |
| 69 | { | 69 | DumpByte(0xFF,D); |
| 70 | size_t size=s->tsv.len+1; /* include trailing '\0' */ | 70 | DumpVar(size,D); |
| 71 | DumpVar(size,D); | 71 | } |
| 72 | DumpBlock(getstr(s),size*sizeof(char),D); | 72 | DumpVector(getstr(s),size-1,D); /* no need to save '\0' */ |
| 73 | } | 73 | } |
| 74 | } | 74 | } |
| 75 | 75 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lundump.c,v 2.28 2014/02/28 12:25:12 roberto Exp roberto $ | 2 | ** $Id: lundump.c,v 2.29 2014/02/28 16:13:01 roberto Exp roberto $ |
| 3 | ** load precompiled Lua chunks | 3 | ** load precompiled Lua chunks |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -76,15 +76,15 @@ static lua_Integer LoadInteger(LoadState* S) | |||
| 76 | 76 | ||
| 77 | static TString* LoadString(LoadState* S) | 77 | static TString* LoadString(LoadState* S) |
| 78 | { | 78 | { |
| 79 | size_t size; | 79 | size_t size = LoadByte(S); |
| 80 | LoadVar(S,size); | 80 | if (size == 0xFF) LoadVar(S,size); |
| 81 | if (size==0) | 81 | if (size==0) |
| 82 | return NULL; | 82 | return NULL; |
| 83 | else | 83 | else |
| 84 | { | 84 | { |
| 85 | char* s=luaZ_openspace(S->L,S->b,size); | 85 | char* s=luaZ_openspace(S->L,S->b,--size); |
| 86 | LoadVector(S,s,size); | 86 | LoadVector(S,s,size); |
| 87 | return luaS_newlstr(S->L,s,size-1); /* remove trailing '\0' */ | 87 | return luaS_newlstr(S->L,s,size); |
| 88 | } | 88 | } |
| 89 | } | 89 | } |
| 90 | 90 | ||
