diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-10-11 14:47:50 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-10-11 14:47:50 -0200 |
| commit | 0ffc676ce7ea4764f3277ce87967ef14ad323933 (patch) | |
| tree | 2582dabfc21f150b20c69a03ddfc9f896bc564d3 /lobject.c | |
| parent | 18fb3ddb897564178bebec44dbe04fabcebf39c5 (diff) | |
| download | lua-0ffc676ce7ea4764f3277ce87967ef14ad323933.tar.gz lua-0ffc676ce7ea4764f3277ce87967ef14ad323933.tar.bz2 lua-0ffc676ce7ea4764f3277ce87967ef14ad323933.zip | |
details
Diffstat (limited to 'lobject.c')
| -rw-r--r-- | lobject.c | 9 |
1 files changed, 4 insertions, 5 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.c,v 1.52 2000/10/05 12:14:08 roberto Exp roberto $ | 2 | ** $Id: lobject.c,v 1.53 2000/10/09 13:47:32 roberto Exp roberto $ |
| 3 | ** Some generic functions over Lua objects | 3 | ** Some generic functions over Lua objects |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -87,16 +87,14 @@ void luaO_verror (lua_State *L, const char *fmt, ...) { | |||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | 89 | ||
| 90 | #define EXTRALEN sizeof(" string \"s...\" ") | ||
| 91 | |||
| 92 | void luaO_chunkid (char *out, const char *source, int bufflen) { | 90 | void luaO_chunkid (char *out, const char *source, int bufflen) { |
| 93 | if (*source == '=') | 91 | if (*source == '=') |
| 94 | sprintf(out, "%.*s", bufflen, source+1); /* remove first char */ | 92 | sprintf(out, "%.*s", bufflen-1, source+1); /* remove first char */ |
| 95 | else { | 93 | else { |
| 96 | bufflen -= EXTRALEN; | ||
| 97 | if (*source == '@') { | 94 | if (*source == '@') { |
| 98 | int l; | 95 | int l; |
| 99 | source++; /* skip the `@' */ | 96 | source++; /* skip the `@' */ |
| 97 | bufflen -= sizeof("file `...%s'"); | ||
| 100 | l = strlen(source); | 98 | l = strlen(source); |
| 101 | if (l>bufflen) { | 99 | if (l>bufflen) { |
| 102 | source += (l-bufflen); /* get last part of file name */ | 100 | source += (l-bufflen); /* get last part of file name */ |
| @@ -107,6 +105,7 @@ void luaO_chunkid (char *out, const char *source, int bufflen) { | |||
| 107 | } | 105 | } |
| 108 | else { | 106 | else { |
| 109 | int len = strcspn(source, "\n"); /* stop at first newline */ | 107 | int len = strcspn(source, "\n"); /* stop at first newline */ |
| 108 | bufflen -= sizeof("string \"%.*s...\""); | ||
| 110 | if (len > bufflen) len = bufflen; | 109 | if (len > bufflen) len = bufflen; |
| 111 | if (source[len] != '\0') /* must truncate? */ | 110 | if (source[len] != '\0') /* must truncate? */ |
| 112 | sprintf(out, "string \"%.*s...\"", len, source); | 111 | sprintf(out, "string \"%.*s...\"", len, source); |
