diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-05-02 14:12:27 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-05-02 14:12:27 -0300 |
| commit | 85dcb411a8454de0bc1c2c60a24af1588e436c23 (patch) | |
| tree | 169fc4cefe7ba02a46944a172660aff208b3e42e /lstrlib.c | |
| parent | 3c6a383d6239629fd8858e0d59bcdab25138bcc1 (diff) | |
| download | lua-85dcb411a8454de0bc1c2c60a24af1588e436c23.tar.gz lua-85dcb411a8454de0bc1c2c60a24af1588e436c23.tar.bz2 lua-85dcb411a8454de0bc1c2c60a24af1588e436c23.zip | |
all textual errors go through `luaL_verror'
Diffstat (limited to 'lstrlib.c')
| -rw-r--r-- | lstrlib.c | 24 |
1 files changed, 12 insertions, 12 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lstrlib.c,v 1.79 2002/03/20 12:54:08 roberto Exp roberto $ | 2 | ** $Id: lstrlib.c,v 1.80 2002/04/02 20:41:59 roberto Exp roberto $ |
| 3 | ** Standard library for string operations and pattern-matching | 3 | ** Standard library for string operations and pattern-matching |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -170,7 +170,7 @@ typedef struct MatchState { | |||
| 170 | static int check_capture (MatchState *ms, int l) { | 170 | static int check_capture (MatchState *ms, int l) { |
| 171 | l -= '1'; | 171 | l -= '1'; |
| 172 | if (l < 0 || l >= ms->level || ms->capture[l].len == CAP_UNFINISHED) | 172 | if (l < 0 || l >= ms->level || ms->capture[l].len == CAP_UNFINISHED) |
| 173 | lua_error(ms->L, "invalid capture index"); | 173 | luaL_verror(ms->L, "invalid capture index"); |
| 174 | return l; | 174 | return l; |
| 175 | } | 175 | } |
| 176 | 176 | ||
| @@ -179,7 +179,7 @@ static int capture_to_close (MatchState *ms) { | |||
| 179 | int level = ms->level; | 179 | int level = ms->level; |
| 180 | for (level--; level>=0; level--) | 180 | for (level--; level>=0; level--) |
| 181 | if (ms->capture[level].len == CAP_UNFINISHED) return level; | 181 | if (ms->capture[level].len == CAP_UNFINISHED) return level; |
| 182 | lua_error(ms->L, "invalid pattern capture"); | 182 | luaL_verror(ms->L, "invalid pattern capture"); |
| 183 | return 0; /* to avoid warnings */ | 183 | return 0; /* to avoid warnings */ |
| 184 | } | 184 | } |
| 185 | 185 | ||
| @@ -188,13 +188,13 @@ static const char *luaI_classend (MatchState *ms, const char *p) { | |||
| 188 | switch (*p++) { | 188 | switch (*p++) { |
| 189 | case ESC: | 189 | case ESC: |
| 190 | if (*p == '\0') | 190 | if (*p == '\0') |
| 191 | lua_error(ms->L, "malformed pattern (ends with `%')"); | 191 | luaL_verror(ms->L, "malformed pattern (ends with `%')"); |
| 192 | return p+1; | 192 | return p+1; |
| 193 | case '[': | 193 | case '[': |
| 194 | if (*p == '^') p++; | 194 | if (*p == '^') p++; |
| 195 | do { /* look for a `]' */ | 195 | do { /* look for a `]' */ |
| 196 | if (*p == '\0') | 196 | if (*p == '\0') |
| 197 | lua_error(ms->L, "malformed pattern (missing `]')"); | 197 | luaL_verror(ms->L, "malformed pattern (missing `]')"); |
| 198 | if (*(p++) == ESC && *p != '\0') | 198 | if (*(p++) == ESC && *p != '\0') |
| 199 | p++; /* skip escapes (e.g. `%]') */ | 199 | p++; /* skip escapes (e.g. `%]') */ |
| 200 | } while (*p != ']'); | 200 | } while (*p != ']'); |
| @@ -267,7 +267,7 @@ static const char *match (MatchState *ms, const char *s, const char *p); | |||
| 267 | static const char *matchbalance (MatchState *ms, const char *s, | 267 | static const char *matchbalance (MatchState *ms, const char *s, |
| 268 | const char *p) { | 268 | const char *p) { |
| 269 | if (*p == 0 || *(p+1) == 0) | 269 | if (*p == 0 || *(p+1) == 0) |
| 270 | lua_error(ms->L, "unbalanced pattern"); | 270 | luaL_verror(ms->L, "unbalanced pattern"); |
| 271 | if (*s != *p) return NULL; | 271 | if (*s != *p) return NULL; |
| 272 | else { | 272 | else { |
| 273 | int b = *p; | 273 | int b = *p; |
| @@ -316,7 +316,7 @@ static const char *start_capture (MatchState *ms, const char *s, | |||
| 316 | const char *p, int what) { | 316 | const char *p, int what) { |
| 317 | const char *res; | 317 | const char *res; |
| 318 | int level = ms->level; | 318 | int level = ms->level; |
| 319 | if (level >= MAX_CAPTURES) lua_error(ms->L, "too many captures"); | 319 | if (level >= MAX_CAPTURES) luaL_verror(ms->L, "too many captures"); |
| 320 | ms->capture[level].init = s; | 320 | ms->capture[level].init = s; |
| 321 | ms->capture[level].len = what; | 321 | ms->capture[level].len = what; |
| 322 | ms->level = level+1; | 322 | ms->level = level+1; |
| @@ -426,7 +426,7 @@ static const char *lmemfind (const char *s1, size_t l1, | |||
| 426 | 426 | ||
| 427 | static void push_onecapture (MatchState *ms, int i) { | 427 | static void push_onecapture (MatchState *ms, int i) { |
| 428 | int l = ms->capture[i].len; | 428 | int l = ms->capture[i].len; |
| 429 | if (l == CAP_UNFINISHED) lua_error(ms->L, "unfinished capture"); | 429 | if (l == CAP_UNFINISHED) luaL_verror(ms->L, "unfinished capture"); |
| 430 | if (l == CAP_POSITION) | 430 | if (l == CAP_POSITION) |
| 431 | lua_pushnumber(ms->L, ms->capture[i].init - ms->src_init + 1); | 431 | lua_pushnumber(ms->L, ms->capture[i].init - ms->src_init + 1); |
| 432 | else | 432 | else |
| @@ -636,9 +636,9 @@ static const char *scanformat (lua_State *L, const char *strfrmt, | |||
| 636 | if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ | 636 | if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ |
| 637 | } | 637 | } |
| 638 | if (isdigit(uchar(*p))) | 638 | if (isdigit(uchar(*p))) |
| 639 | lua_error(L, "invalid format (width or precision too long)"); | 639 | luaL_verror(L, "invalid format (width or precision too long)"); |
| 640 | if (p-strfrmt+2 > MAX_FORMAT) /* +2 to include `%' and the specifier */ | 640 | if (p-strfrmt+2 > MAX_FORMAT) /* +2 to include `%' and the specifier */ |
| 641 | lua_error(L, "invalid format (too long)"); | 641 | luaL_verror(L, "invalid format (too long)"); |
| 642 | form[0] = '%'; | 642 | form[0] = '%'; |
| 643 | strncpy(form+1, strfrmt, p-strfrmt+1); | 643 | strncpy(form+1, strfrmt, p-strfrmt+1); |
| 644 | form[p-strfrmt+2] = 0; | 644 | form[p-strfrmt+2] = 0; |
| @@ -663,7 +663,7 @@ static int str_format (lua_State *L) { | |||
| 663 | char buff[MAX_ITEM]; /* to store the formatted item */ | 663 | char buff[MAX_ITEM]; /* to store the formatted item */ |
| 664 | int hasprecision = 0; | 664 | int hasprecision = 0; |
| 665 | if (isdigit(uchar(*strfrmt)) && *(strfrmt+1) == '$') | 665 | if (isdigit(uchar(*strfrmt)) && *(strfrmt+1) == '$') |
| 666 | lua_error(L, "obsolete `format' option (d$)"); | 666 | luaL_verror(L, "obsolete `format' option (d$)"); |
| 667 | arg++; | 667 | arg++; |
| 668 | strfrmt = scanformat(L, strfrmt, form, &hasprecision); | 668 | strfrmt = scanformat(L, strfrmt, form, &hasprecision); |
| 669 | switch (*strfrmt++) { | 669 | switch (*strfrmt++) { |
| @@ -696,7 +696,7 @@ static int str_format (lua_State *L) { | |||
| 696 | } | 696 | } |
| 697 | } | 697 | } |
| 698 | default: /* also treat cases `pnLlh' */ | 698 | default: /* also treat cases `pnLlh' */ |
| 699 | lua_error(L, "invalid option in `format'"); | 699 | luaL_verror(L, "invalid option in `format'"); |
| 700 | } | 700 | } |
| 701 | luaL_addlstring(&b, buff, strlen(buff)); | 701 | luaL_addlstring(&b, buff, strlen(buff)); |
| 702 | } | 702 | } |
