From 3cf9e56a19dfad9dded8a21c8fb5b408e56f603d Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 4 Jul 2014 14:31:56 -0700 Subject: [PATCH] Fix various bugs in global newdecl support. --- plugins/include/sourcemod.inc | 6 +- plugins/mapchooser.sp | 2 +- plugins/nextmap.sp | 26 +-- sourcepawn/compiler/sc.h | 6 +- sourcepawn/compiler/sc1.c | 78 +++++-- sourcepawn/compiler/sc2.c | 2 +- sourcepawn/compiler/sc3.c | 4 +- sourcepawn/compiler/sc5.scp | 396 +++++++++++++++++----------------- 8 files changed, 283 insertions(+), 237 deletions(-) diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc index 8d894cbd..6b1f8d48 100644 --- a/plugins/include/sourcemod.inc +++ b/plugins/include/sourcemod.inc @@ -108,7 +108,7 @@ public Plugin:myinfo; * * @noreturn */ -forward OnPluginStart(); +forward void OnPluginStart(); /** * @deprecated Use AskPluginLoad2() instead. @@ -167,7 +167,7 @@ forward OnGameFrame(); * @note This used to be OnServerLoad(), which is now deprecated. * Plugins still using the old forward will work. */ -forward OnMapStart(); +forward void OnMapStart(); /** * Called right before a map ends. @@ -184,7 +184,7 @@ forward OnMapEnd(); * * @noreturn */ -forward OnConfigsExecuted(); +forward void OnConfigsExecuted(); /** * This is called once, right after OnMapStart() but any time before diff --git a/plugins/mapchooser.sp b/plugins/mapchooser.sp index 1842d18e..8c36a086 100644 --- a/plugins/mapchooser.sp +++ b/plugins/mapchooser.sp @@ -1200,4 +1200,4 @@ public Native_GetNominatedMapList(Handle:plugin, numParams) } return; -} \ No newline at end of file +} diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp index 4f11925d..9a4278ed 100644 --- a/plugins/nextmap.sp +++ b/plugins/nextmap.sp @@ -36,7 +36,7 @@ #include #include "include/nextmap.inc" -public Plugin:myinfo = +public Plugin myinfo = { name = "Nextmap", author = "AlliedModders LLC", @@ -46,13 +46,13 @@ public Plugin:myinfo = }; -new g_MapPos = -1; -new Handle:g_MapList = INVALID_HANDLE; -new g_MapListSerial = -1; +int g_MapPos = -1; +Handle g_MapList = INVALID_HANDLE; +int g_MapListSerial = -1; -new g_CurrentMapStartTime; +int g_CurrentMapStartTime; -public APLRes:AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) { decl String:game[128]; GetGameFolderName(game, sizeof(game)); @@ -73,7 +73,7 @@ public APLRes:AskPluginLoad2(Handle myself, bool late, char[] error, int err_max } -public OnPluginStart() +public void OnPluginStart() { LoadTranslations("common.phrases"); LoadTranslations("nextmap.phrases"); @@ -89,12 +89,12 @@ public OnPluginStart() SetNextMap(currentMap); } -public OnMapStart() +public void OnMapStart() { g_CurrentMapStartTime = GetTime(); } -public OnConfigsExecuted() +public void OnConfigsExecuted() { decl String:lastMap[64], String:currentMap[64]; GetNextMap(lastMap, sizeof(lastMap)); @@ -109,7 +109,7 @@ public OnConfigsExecuted() } } -public Action:Command_List(int client, int args) +public Action Command_List(int client, int args) { PrintToConsole(client, "Map Cycle:"); @@ -124,7 +124,7 @@ public Action:Command_List(int client, int args) return Plugin_Handled; } -FindAndSetNextMap() +void FindAndSetNextMap() { if (ReadMapList(g_MapList, g_MapListSerial, @@ -169,7 +169,7 @@ FindAndSetNextMap() SetNextMap(mapName); } -public Action:Command_MapHistory(int client, int args) +public Action Command_MapHistory(int client, int args) { new mapCount = GetMapHistorySize(); @@ -202,7 +202,7 @@ public Action:Command_MapHistory(int client, int args) return Plugin_Handled; } -FormatTimeDuration(char[] buffer, int maxlen, int time) +int FormatTimeDuration(char[] buffer, int maxlen, int time) { new days = time / 86400; new hours = (time / 3600) % 24; diff --git a/sourcepawn/compiler/sc.h b/sourcepawn/compiler/sc.h index 6edd5c48..dff12a86 100644 --- a/sourcepawn/compiler/sc.h +++ b/sourcepawn/compiler/sc.h @@ -521,8 +521,8 @@ typedef enum s_optmark { #define METHODMAPTAG 0x04000000Lu #define STRUCTTAG 0x02000000Lu #define TAGMASK (~PUBLICTAG) -#define TAGTYPEMASK (FUNCTAG | OBJECTTAG | ENUMTAG | METHODMAPTAG) -#define TAGFLAGMASK (FIXEDTAG | TAGTYPEMASK | STRUCTTAG) +#define TAGTYPEMASK (FUNCTAG | OBJECTTAG | ENUMTAG | METHODMAPTAG | STRUCTTAG) +#define TAGFLAGMASK (FIXEDTAG | TAGTYPEMASK) #define CELL_MAX (((ucell)1 << (sizeof(cell)*8-1)) - 1) @@ -602,7 +602,7 @@ void sp_fdbg_ntv_hook(int index, symbol *sym); /* function prototypes in SC1.C */ SC_FUNC void set_extension(char *filename,char *extension,int force); -SC_FUNC symbol *fetchfunc(char *name,int tag); +SC_FUNC symbol *fetchfunc(char *name); SC_FUNC char *operator_symname(char *symname,char *opername,int tag1,int tag2,int numtags,int resulttag); SC_FUNC char *funcdisplayname(char *dest,char *funcname); SC_FUNC int constexpr(cell *val,int *tag,symbol **symptr); diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index 00b19a18..47c60507 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -3101,8 +3101,6 @@ static int parse_new_typeexpr(typeinfo_t *type, const token_t *first, int flags) type->tag = sc_rationaltag; } else if (strcmp(tok.str, "bool") == 0) { type->tag = pc_tag_bool; - } else if (strcmp(tok.str, "char") == 0) { - type->tag = pc_tag_string; } else { type->tag = pc_findtag(tok.str); if (type->tag == sc_rationaltag) { @@ -3142,6 +3140,7 @@ static int parse_new_typeexpr(typeinfo_t *type, const token_t *first, int flags) } } while (matchtoken('[')); type->ident = iARRAY; + type->size = 0; } if (flags & DECLFLAG_ARGUMENT) { @@ -3360,6 +3359,7 @@ int parse_decl(declinfo_t *decl, int flags) // This must be a newdecl, "x[] y" or "x[] &y", the latter of which // is illegal, but we flow it through the right path anyway. lexpush(); + decl->has_postdims = FALSE; return parse_new_decl(decl, &ident.tok, flags); } @@ -4471,7 +4471,7 @@ static int compare_tag(int tag1, int tag2) * Finds a function in the global symbol table or creates a new entry. * It does some basic processing and error checking. */ -SC_FUNC symbol *fetchfunc(char *name,int tag) +SC_FUNC symbol *fetchfunc(char *name) { symbol *sym; @@ -4483,17 +4483,9 @@ SC_FUNC symbol *fetchfunc(char *name,int tag) error(21,name); /* yes, and it is a native */ } /* if */ assert(sym->vclass==sGLOBAL); - if ((sym->usage & uPROTOTYPED)!=0 && !compare_tag(sym->tag, tag)) - error(25); /* mismatch from earlier prototype */ - if ((sym->usage & uDEFINE)==0) { - /* as long as the function stays undefined, update the address and the tag */ - if (sym->states==NULL) - sym->addr=code_idx; - sym->tag=tag; - } /* if */ } else { /* don't set the "uDEFINE" flag; it may be a prototype */ - sym=addsym(name,code_idx,iFUNCTN,sGLOBAL,tag,0); + sym=addsym(name,code_idx,iFUNCTN,sGLOBAL,0,0); assert(sym!=NULL); /* fatal error 103 must be given on error */ /* assume no arguments */ sym->dim.arglist=(arginfo*)calloc(1, sizeof(arginfo)); @@ -4823,9 +4815,17 @@ static symbol *funcstub(int tokid, declinfo_t *decl, const int *thistag) needtoken('('); /* only functions may be native/forward */ - sym=fetchfunc(decl->name, decl->type.tag); /* get a pointer to the function entry */ + sym=fetchfunc(decl->name); if (sym==NULL) return NULL; + if ((sym->usage & uPROTOTYPED)!=0 && !compare_tag(sym->tag, decl->type.tag)) + error(25); + if ((sym->usage & uDEFINE) == 0) { + // As long as the function stays undefined, update its address and tag. + sym->addr = code_idx; + sym->tag = decl->type.tag; + } + if (fnative) { sym->usage=(char)(uNATIVE | uRETVALUE | uDEFINE | (sym->usage & uPROTOTYPED)); sym->x.lib=curlibrary; @@ -4934,13 +4934,32 @@ static int newfunc(declinfo_t *decl, const int *thistag, int fpublic, int fstati if (stock) error(42); /* invalid combination of class specifiers */ } /* if */ - sym=fetchfunc(decl->name, decl->type.tag);/* get a pointer to the function entry */ - if (sym==NULL || (sym->usage & uNATIVE)!=0) - return TRUE; /* it was recognized as a function declaration, but not as a valid one */ + + if ((sym=fetchfunc(decl->name)) == NULL) + return TRUE; + + // Not a valid function declaration if native. + if (sym->usage & uNATIVE) + return TRUE; + + // If the function has not been prototyed, set its tag. + if (!(sym->usage & uPROTOTYPED)) + sym->tag = decl->type.tag; + + // As long as the function stays undefined, update its address. + if (!(sym->usage & uDEFINE)) + sym->addr = code_idx; + if (fpublic) sym->usage|=uPUBLIC; if (fstatic) sym->fnumber=filenum; + + if (sym->usage & (uPUBLIC | uFORWARD)) { + if (decl->type.numdim > 0) + error(141); + } + /* if the function was used before being declared, and it has a tag for the * result, add a third pass (as second "skimming" parse) because the function * result may have been used with user-defined operators, which have now @@ -5027,8 +5046,33 @@ static int newfunc(declinfo_t *decl, const int *thistag, int fpublic, int fstati } /* if */ #endif statement(NULL,FALSE); - if ((rettype & uRETVALUE)!=0) + + if ((rettype & uRETVALUE)!=0) { sym->usage|=uRETVALUE; + } else { + if (sym->tag == pc_tag_void && + (sym->usage & uFORWARD) && + !decl->type.tag && + !decl->is_new) + { + // We got something like: + // forward void X(); + // public X() + // + // Switch our decl type to void. + decl->type.tag = pc_tag_void; + decl->type.tags[0] = pc_tag_void; + } + } + + // Check that return tags match. + if ((sym->usage & uPROTOTYPED) && !compare_tag(sym->tag, decl->type.tag)) { + int old_fline = fline; + fline = sym->lnumber; + error(25); + fline = old_fline; + } + if (declared!=0) { /* This happens only in a very special (and useless) case, where a function * has only a single statement in its body (no compound block) and that diff --git a/sourcepawn/compiler/sc2.c b/sourcepawn/compiler/sc2.c index 5662edec..32d3fa19 100644 --- a/sourcepawn/compiler/sc2.c +++ b/sourcepawn/compiler/sc2.c @@ -1949,7 +1949,7 @@ char *sc_tokens[] = { "...", "..", "::", "assert", "*begin", "break", - "case", "cellsof", "chars", "class", "const", "continue", + "case", "cellsof", "char", "class", "const", "continue", "decl", "default", "defined", "delete", "do", "else", "*end", "enum", "exit", "for", "forward", "funcenum", "functag", diff --git a/sourcepawn/compiler/sc3.c b/sourcepawn/compiler/sc3.c index 152ef3ef..8472122c 100644 --- a/sourcepawn/compiler/sc3.c +++ b/sourcepawn/compiler/sc3.c @@ -2129,7 +2129,7 @@ restart: /* could be a "use before declaration"; in that case, create a stub * function so that the usage can be marked. */ - sym=fetchfunc(lastsymbol,0); + sym=fetchfunc(lastsymbol); if (sym==NULL) error(163); /* insufficient memory */ markusage(sym,uREAD); @@ -2281,7 +2281,7 @@ static int primary(value *lval) * call" syntax. So assume that the symbol refers to a function. */ assert(sc_status==statFIRST); - sym=fetchfunc(st,0); + sym=fetchfunc(st); if (sym==NULL) error(163); /* insufficient memory */ } /* if */ diff --git a/sourcepawn/compiler/sc5.scp b/sourcepawn/compiler/sc5.scp index b9a231af..509ae828 100644 --- a/sourcepawn/compiler/sc5.scp +++ b/sourcepawn/compiler/sc5.scp @@ -32,13 +32,13 @@ SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned ch /*-*SCPACK start of pair table, do not change or remove this line */ unsigned char errstr_table [][2] = { {101,32}, {116,32}, {111,110}, {115,32}, {100,32}, {105,110}, {97,114}, {116,105}, {37,115}, {101,114}, {110,111}, {97,110}, {101,110}, {97,108}, {135,130}, {114,101}, - {34,136}, {144,34}, {111,114}, {117,110}, {121,32}, {138,129}, {115,105}, {97,116}, {115,116}, {101,132}, {100,101}, {109,140}, {32,145}, {41,10}, {109,98}, {116,104}, - {114,97}, {117,115}, {146,32}, {147,99}, {142,32}, {98,108}, {102,163}, {111,108}, {101,120}, {118,141}, {97,32}, {115,121}, {99,139}, {171,158}, {134,160}, {173,167}, - {112,101}, {116,121}, {172,149}, {115,10}, {103,32}, {103,117}, {181,155}, {137,32}, {134,182}, {116,111}, {102,133}, {115,150}, {99,104}, {105,132}, {97,165}, {111,102}, - {105,131}, {161,129}, {166,164}, {169,189}, {109,193}, {104,97}, {109,101}, {99,116}, {174,148}, {133,195}, {109,97}, {101,100}, {101,131}, {99,130}, {37,131}, {175,156}, - {44,32}, {191,32}, {117,108}, {99,111}, {98,128}, {118,134}, {112,143}, {130,32}, {105,190}, {213,216}, {116,97}, {110,32}, {154,186}, {134,97}, {102,105}, {118,128}, - {184,129}, {100,105}, {111,112}, {97,115}, {136,10}, {156,10}, {128,145}, {152,151}, {109,151}, {119,105}, {97,131}, {226,137}, {101,10}, {207,157}, {34,32}, {99,108}, - {40,237}, {150,122}, {108,128}, {205,152}, {139,32}, {141,32}, {177,176}, {197,223}, {110,97}, {101,108}, {177,112}, {166,142}, {133,32}, {159,32}, {133,180} + {34,136}, {144,34}, {111,114}, {117,110}, {121,32}, {138,129}, {115,105}, {97,116}, {115,116}, {100,101}, {101,132}, {109,140}, {32,145}, {41,10}, {109,98}, {116,104}, + {114,97}, {147,99}, {117,115}, {146,32}, {98,108}, {161,142}, {102,165}, {111,108}, {101,120}, {118,141}, {97,32}, {115,121}, {116,121}, {99,139}, {171,158}, {134,160}, + {174,167}, {112,101}, {173,149}, {115,10}, {103,32}, {103,117}, {181,155}, {137,32}, {134,182}, {116,111}, {102,133}, {105,132}, {115,150}, {99,104}, {97,164}, {169,187}, + {111,102}, {105,131}, {162,129}, {44,32}, {166,32}, {133,191}, {109,194}, {104,97}, {109,101}, {99,116}, {175,148}, {109,97}, {101,100}, {99,130}, {37,131}, {176,156}, + {192,32}, {117,108}, {99,111}, {98,128}, {101,131}, {118,134}, {112,143}, {97,142}, {130,32}, {105,190}, {213,217}, {110,32}, {153,186}, {102,105}, {118,128}, {184,129}, + {100,105}, {111,112}, {97,115}, {136,10}, {156,10}, {128,145}, {152,151}, {109,151}, {116,97}, {119,105}, {99,108}, {97,131}, {225,137}, {101,10}, {207,157}, {34,32}, + {40,238}, {172,112}, {150,122}, {108,128}, {205,152}, {139,32}, {141,32}, {172,177}, {199,222}, {110,97}, {101,108}, {241,128}, {139,132}, {102,146}, {133,32} }; /*-*SCPACK end of pair table, do not change or remove this line */ @@ -184,149 +184,151 @@ static char *errmsg[] = { /*138*/ "const was specified twice\n", /*139*/ "could not find type \"%s\"\n", /*140*/ "new-style array types cannot specify dimension sizes as part of their type\n", -/*141*/ "natives cannot return arrays\n", +/*141*/ "natives, forwards, and public functions cannot return arrays\n", +/*142*/ "invalid type declaration\n", #else - "\250\260\307\231\271k\214:\234\320bu\201fo\223\204\221\012", - "\202l\224\252s\205g\362\347e\233\201(\242\250\326\273\202) \254 f\247low ea\274 \042c\343e\042\012", - "\232\357\335\244\321\252loc\365\331\200\304ap\260\206 \374\252\323mpo\223\204\245ock\012", - "\373\234 \300\225imple\233t\313\012", - "\302\312\224\225\367\270t\263", - "\304\324a\273gn\231\271 \364\256y\012", - "\353\227\242\262\324\217\334\313\012", - "\304\324\252\363\213\201\250\326\273\202; \343sum\231z\211o\012", - "\311\310\361\200(nega\207ve\320z\211o \242ou\201\321bo\223ds\235", - "\311\302\242\232\357\335\216\012", - "\311out\226d\200\373\263", - "\311\302c\215l\320\225\252\303add\217s\263", - "\212 \214tr\224po\205\201(\212 pu\245ic \373s\235", - "\311\347e\233t; \225\374s\351t\274\012", - "\042\232fa\322t\356c\343\200\304\324\237\200l\343\201c\343\200\374s\351t\274 \347e\233t\012", - "m\322\207p\362\232fa\322t\203\374\042s\351t\274\042\012", - "\223\334\231\317\012", - "\205i\207\215iza\244d\227\252\250ce\313\203\232\357\206\231\361\354", - "\225\252lab\371:\345", - "\311\257 \370m\346\012", - "\257 \215\217ad\224\334\313:\345", - "\304\324l\251u\200(n\202-\363\213t\235", - "\310a\273gn\233\201\304\324\226mp\362a\273gn\233t\012", - "\042b\217ak\356\242\042\315t\205ue\356\300ou\201\321\315t\250t\012", - "\302head\376\341ff\211\203from pro\271\366\012", - "\212 \350\274\376\042#if...\042\012", - "\311\274\335\307\267\363\213t\012", - "\311subscrip\201(\225\364\310\242\271o m\213\224subscripts):\345", - "\311\250\326\273\202\320\343sum\231z\211o\012", - "\323mpo\223\204\347e\233\201\225\357os\231a\201\237\200\214\204\321\336\362(\230\206t\231a\201l\205\200%d\235", - "\223k\212w\333\341\217c\207v\354", - "\310\205\232x ou\201\321bo\223d\203(\331\346\235", - "\310\304\324\205\232x\231(\331\346\235", - "\340do\314\225\367\252\232fa\322\201\251u\200(\340%d\235", - "\340\372\200mis\350\274 (\340%d\235", - "empt\224\347e\233t\012", - "\311\230r\376(po\273\245\224n\202-t\211m\205\227\231\230r\205g\235", - "\250t\240 \274\335\307\211\203\327l\205\354", - "\363\213\201\257 \305\203\212 \361\354", - "duplic\227\200\042c\343e\356lab\371 (\251u\200%d\235", - "\311\371lip\226s\320\310\361\200\300\225k\212wn\012", - "\311\323\236\205a\244\321\357\343\203s\260ci\336\211\263", - "\274\335\307\267\363\213\201\250ce\313\203r\213g\200f\242pack\231\230r\205g\012", - "po\226\216\365p\335\306t\211\203\304\326c\313\200\215l \370m\231p\335\306t\211\263", - "\271o m\213\224\302\270t\263", - "\223k\212w\333\310\361\200(\331\346\235", - "\310\361\314do \225\350\274\320\242\232\230\205a\244\310\300\271o sm\215l\012", - "\310(\203do \225\350\274\012", - "\311l\205\200\315t\205ua\216\012", - "\311r\213g\354", - "\311subscript\320\241\200\042[ ]\356\353\227\222\203\327\312j\242\341\233\226\202\263", - "m\322\207-\341\233\226\202\365\256y\203\304\324f\322l\224\205i\207\215iz\313\012", - "\250ce\313\376\312ximum nu\236\267\321\341\233\226\202\263", - "\223\350\274\231\357os\376b\240c\200(\042}\042\235", - "\230\206\201\321\302bod\224\351\237ou\201\302head\211\012", - "\256ys\320loc\365\331\314\213\204\302\270t\203\262\324pu\245ic (\331\346\235", - "\223\272ish\231\250\326\273\327bef\222\200\323mpil\267\341\217c\207v\354", - "duplic\227\200\270t; sam\200\340\300p\343s\231t\351c\354", - "\302\340\312\224\225\367\252\232fa\322\201\251u\200(\331\346\235", - "m\322\207p\362\042#\371se\356\341\217c\207v\314betwe\214 \042#if ... #\214\341f\042\012", - "\042#\371seif\356\341\217c\207\337f\247low\203\364\042#\371se\356\341\217c\207v\354", - "nu\236\267\321\353\213d\203do\314\225\336\201\237\200\353\227\222\012", - "\302\217s\322\201\332\264\321\353\227\222\234 \304\324\221\012", - "\262\274\213g\200\326\334\231\353\227\222\263", - "\302\340\312\224\202l\224\367\252s\205g\362\332\264(\340%d\235", - "\302\340\312\224\225\324\252\217f\211\214c\200\340\242\364\310(\340\221\235", - "\331\200\262\324bo\375\252\217f\211\214c\200\213\204\364\310(\331\346\235", - "\311\240\216\365nu\236\267\326ci\226\327\374#p\240g\312\012", - "\240\216\365nu\236\267f\222\312\201\215\217ad\224\334\313\012", - "\240\216\365nu\236\267supp\222\201w\352\225\214\276\313\012", - "\241\211-\334\231\353\227\242\304\324\232\357\206\231bef\222\200\241\200(\373\234\235", - "\042\361e\277\356\353\227\242\300\311\327\042\373\356\257\263", - "\302\340\304\324\364\310(\340\221\235", - "#\334\200p\227t\211\333\304\230\206\201\351\375\364\215p\305be\207c \274\335\307\211\012", + "\250\261\311\232\271k\214:\234\303bu\201fo\223\204\221\012", + "\202l\224\252s\205g\363\346e\233\201(\243\250\326\274\202) \255 f\247low ea\275 \042c\342e\042\012", + "\231\352\206\327 \320\252loc\366\332\200\306ap\261\206 \376\252\322mpo\223\204\244ock\012", + "\246\234 \301\225imple\233t\314\012", + "\304\313\224\225\370\270t\263", + "\306\323a\274gn\232\271 \365\257y\012", + "\354\227\243\262\323\217\334\314\012", + "\306\323\252\364\213\201\250\326\274\202; \342sum\232z\211o\012", + "\305\312\362\200(nega\207ve\303z\211o \243ou\201\320bo\223ds\235", + "\305\304\243\231\352\206\327\012", + "\305out\226d\200\246\263", + "\305\304c\215l\303\225\252\277add\217s\263", + "\212 \214tr\224po\205\201(\212 pu\244ic \246s\235", + "\305\346e\233t; \225\376s\351t\275\012", + "\042\231fa\321t\357c\342\200\306\323\237\200l\342\201c\342\200\376s\351t\275 \346e\233t\012", + "m\321\207p\363\231fa\321t\203\376\042s\351t\275\042\012", + "\223\334\232\317\012", + "\205i\207\215iz\327 d\227\252\250ce\314\203\231\352\206\232\362\355", + "\225\252lab\372:\344", + "\305\260 \371m\345\012", + "\260 \215\217ad\224\334\314:\344", + "\306\323l\251u\200(n\202-\364\213t\235", + "\312a\274gn\233\201\306\323\226mp\363a\274gn\233t\012", + "\042b\217ak\357\243\042\315t\205ue\357\301ou\201\320\315t\250t\012", + "\304head\205\264\340ff\211\203from pro\271\367\012", + "\212 \347\275\205\264\042#if...\042\012", + "\305\275\206a\311\267\364\213t\012", + "\305subscrip\201(\225\365\312\243\271o m\213\224subscripts):\344", + "\305\250\326\274\202\303\342sum\232z\211o\012", + "\322mpo\223\204\346e\233\201\225\352os\232a\201\237\200\214\204\320\335\363(\230\206t\232a\201l\205\200%d\235", + "\223k\212w\333\340\217c\207v\355", + "\312\205\231x ou\201\320bo\223d\203(\332\345\235", + "\312\306\323\205\231x\232(\332\345\235", + "\337do\324\225\370\252\231fa\321\201\251u\200(\337%d\235", + "\337\373mis\347\275 (\337%d\235", + "empt\224\346e\233t\012", + "\305\230r\205\264(po\274\244\224n\202-t\211m\205\227\232\230r\205g\235", + "\250t\240 \275\206a\311\211\203\330l\205\355", + "\364\213\201\260 \307\203\212 \362\355", + "duplic\227\200\042c\342e\357lab\372 (\251u\200%d\235", + "\305\372lip\226s\303\312\362\200\301\225k\212wn\012", + "\305\322\236\205\327 \320\352\342\203s\261ci\335\211\263", + "\275\206a\311\267\364\213\201\250ce\314\203r\213g\200f\243pack\232\230r\205g\012", + "po\226\216\366p\206a\310t\211\203\306\326c\314\200\215l \371m\232p\206a\310t\211\263", + "\271o m\213\224\304\270t\263", + "\223k\212w\333\312\362\200(\332\345\235", + "\312\362\324do \225\347\275\303\243\231\230\205\327 \312\301\271o sm\215l\012", + "\312(\203do \225\347\275\012", + "\305l\205\200\315t\205u\327\012", + "\305r\213g\355", + "\305subscript\303\242\200\042[ ]\357\354\227\222\203\330\313j\243\340\233\226\202\263", + "m\321\207-\340\233\226\202\366\257y\203\306\323f\321l\224\205i\207\215iz\314\012", + "\250ce\314\205\264\313ximum nu\236\267\320\340\233\226\202\263", + "\223\347\275\232\352os\205\264b\240c\200(\042}\042\235", + "\230\206\201\320\304bod\224\351\237ou\201\304head\211\012", + "\257ys\303loc\366\332\324\374\304\270t\203\262\323pu\244ic (\332\345\235", + "\223\272ish\232\250\326\274\330be\375\200\322mpil\267\340\217c\207v\355", + "duplic\227\200\270t; sam\200\337\301p\342s\232t\351c\355", + "\304\337\313\224\225\370\252\231fa\321\201\251u\200(\332\345\235", + "m\321\207p\363\042#\372se\357\340\217c\207v\324betwe\214 \042#if ... #\214\340f\042\012", + "\042#\372seif\357\340\217c\207\336f\247low\203\365\042#\372se\357\340\217c\207v\355", + "nu\236\267\320\354\213d\203do\324\225\335\201\237\200\354\227\222\012", + "\304\217s\321\201\350\264\320\354\227\222\234 \306\323\221\012", + "\262\275\213g\200\326\334\232\354\227\222\263", + "\304\337\313\224\202l\224\370\252s\205g\363\350\264(\337%d\235", + "\304\337\313\224\225\323\252\217f\211\214c\200\337\243\365\312(\337\221\235", + "\332\200\262\323bo\237 \252\217f\211\214c\200\374\365\312(\332\345\235", + "\305\240\216\366nu\236\267\326ci\226\330\376#p\240g\313\012", + "\240\216\366nu\236\267\375\313\201\215\217ad\224\334\314\012", + "\240\216\366nu\236\267supp\222\201w\353\225\214\276\314\012", + "\242\211-\334\232\354\227\243\306\323\231\352\206\232be\375\200\242\200(\246\234\235", + "\042\362e\300\357\354\227\243\301\305\330\042\246\357\260\263", + "\304\337\306\323\365\312(\337\221\235", + "#\334\200p\227t\211\333\306\230\206\201\351\237 \365\215p\307be\207c \275\206a\311\211\012", "\205pu\201l\205\200\271o l\202\264(aft\267subs\207tu\216s\235", - "\253n\332x \211r\242\374\237\200\250\326\273\202\320\242\311\302c\215l\012", - "m\215f\222m\231UTF-8 \214\323d\205g\320\242c\222rupt\231\336le: \344", - "\302\241\314bo\375\042\217turn\356\213\204\042\217tur\333<\251ue>\042\012", - "\205\315\226\230\214\201\217tur\333\366\203(\310& n\202-\256y\235", - "\223k\212w\333\257\320\242\225\252\363\213\201\257 \360", - "\262\332k\200\252\332\264\352\252\232fa\322\201\251u\200f\242\364\205\232x\231\310p\335\306t\267\360", - "\241\211-\334\231\353\227\222\203\213\204\370\207\337\373\203\312\224\225\367\347e\263", - "\252\302\242\331\200\312\224\202l\224b\371\202\264\271 \252s\205g\362au\271\350\327\360", - "\347\200\315fli\307: \202\200\321\237\200\347\314\300\215\217ad\224a\273gn\231\271 a\212\237\267imple\233\332\244\360", - "\212 \347\314\206\200\334\231f\242\317\012", - "\223k\212w\333au\271\350\202\345", - "\223k\212w\333\347\346 f\242au\271\350\202\345", - "pu\245ic \331\314\213\204loc\365\331\314\312\224\225\367\347\314\360", - "\347\200\331\314\312\224\225\324\205i\207\215iz\231\360", - "pu\245ic \373\203\312\224\225\217tur\333\256y\203\360", - "a\236i\265ou\203\363\213t; \332\264ov\211rid\200\300\217qui\217\204\360", - "nu\236\267\321\270t\203do\314\225\350\274 \334i\216\012", - "\250\260\307\231\332\264\370m\200id\214\207\336\211\012", - "\302\214um\211a\244\217qui\217\203\223iqu\200\332g\012", - "\262\367\217qui\217\204p\335\306t\211\203aft\267\342\216\365p\335\306t\211\263", - "\323\322\204\225\272\204\306\236\211\234 \374\230ruc\201\221\012", - "\317 do\314\225\367\252\350\274\376\366\012", - "\372\346 sho\322\204\324\221 \374new-\230y\362\232\357\335\216\263", - "\316sho\322\204\225\367\364\250plici\201\217tur\333\366\012", - "\302pro\271\366\203do \225\350\274\012", - "s\260cif\224ei\237\267\215l \341\233\226\202\203\242\202l\224\237\200l\343\201\341\233\226\202\012", - "\262\272\204\316\344", - "\316w\352\215\217ad\224\334\231\327\237\300\344", - "\262\272\204\213\224\306\237od\203f\242\344", - "\262\272\204\306\237o\204\242pr\353t\224\210.\344", - "\262c\215l \306\237od\203\327\364\256y\012", - "\262c\215l \306\237od\203\327\252\373\012", - "\306\237o\204\304\367\252\336rs\201\340\323mpa\207\245\200\351\375\237\200\316\372\200(\210\235", - "\316\370m\200\304\230\206\201\351\375\364upp\211c\343\200lett\211\012", - "\316\305\203\215\217ad\224be\214 \334\231(\326vio\241l\224se\214 \352\210\235", - "\250\260\307\231id\214\207\336\267- d\275you f\222ge\201\252\366?\012", - "\363ru\307\242\302\304\217tur\333\332\264\344", - "\262\334\200\363ru\307\242f\222\234; \215\217ad\224\250i\230\203\352\252\344", - "miss\376\366\320\242\316\304\367\237\200sam\200\370m\200\352\316\221\012", - "\262\241\200\232lete\320\316\316\305\203\212 \232\230ru\307\222\012", - "\212 \306\237od\312p \242\357\343\203w\352fo\223\204f\242\344", - "\212 \232\230ru\307\242w\352fo\223\204f\242\316\344", - "\232\230ru\307\222\203\304\324\370\207\337\373\263", - "\232\230ru\307\222\203\262\367\250t\240 \270t\263", - "\306\237od\312p \213\204\357\343\203\226gn\227u\217\203\304\241\200new-\230y\362\372\200\232\357\335\216\263", - "\262s\260cif\224\310\341\233\226\202\203\327bo\375\372\200\213\204\370\306\012", - "\250\260\307\231\372\200\250\326\273\202\012", - "f\322ly-qu\215i\336\231\370m\346 \300\271o l\202g\320wo\322\204\324tr\243\227\231\271\345", - "\223\250\260\307\231\271k\214\320\250\260\307\231\306\237o\204\242pr\353\261\012", - "\250\260\307\231\042\370\207ve\356\242\042get\042\012", - "\316f\242\316\215\217ad\224\250i\230\263", - "pr\353t\224gett\211\203\262accep\201\250t\240 \270t\263", - "\316\304\367\237\200sam\200\217tur\333\372\200\352pr\353t\224\316(\210\235", - "\262mix \306\237od\312p\203\213\204\357\343s\314\351\375\205h\211it\213c\354", - "\262\323\211c\200\373\203\271 \251ue\263", - "\262\323\211c\200objec\201\372\200\316\271 n\202-objec\201\372\200\344", - "\262\323\211c\200n\202-objec\201\372\200\316\271 objec\201\372\200\344", - "\262\323\211c\200\223\217l\227\231objec\201\366\203\316\213\204\344", - "\372\200mis\350\274 (\316\213\204\210\235", - "\262\241\200\364objec\201\374\252m\322\207-\332\264s\371e\307\222\012", - "\256y\203\206\200\225supp\222t\231\352\217tur\333\366\263", - "\262mix \217f\211\214c\200\213\204\310\366\263", - "\315s\201w\352s\260ci\336\231t\351c\354", - "\323\322\204\225\272\204\372\346\012", - "new-\230y\362\310\366\203\262s\260cif\224\341\233\226\327\361\314\352p\206\201\321\237eir \366\012", - "\370\207v\314\262\217tur\333\256y\263" + "\253n\350x \211r\243\376\237\200\250\326\274\202\303\243\305\304c\215l\012", + "m\215\375m\232UTF-8 \214\322d\205g\303\243c\222rupt\232\335le: \343", + "\304\242\324bo\237 \042\217turn\357\374\042\217tur\333<\251ue>\042\012", + "\205\315\226\230\214\201\217tur\333\367\203(\312& n\202-\257y\235", + "\223k\212w\333\260\303\243\225\252\364\213\201\260 \360", + "\262\350k\200\252\350\264\353\252\231fa\321\201\251u\200f\243\365\205\231x\232\312p\206a\310t\267\360", + "\242\211-\334\232\354\227\222\203\374\371\207\336\246\203\313\224\225\370\346e\263", + "\252\304\243\332\200\313\224\202l\224b\372\202\264\271 \252s\205g\363au\271\347\330\360", + "\346\200\315fli\311: \202\200\320\237\200\346\324\301\215\217ad\224a\274gn\232\271 a\212\237\267imple\233t\327 \360", + "\212 \346\324\206\200\334\232f\243\317\012", + "\223k\212w\333au\271\347\202\344", + "\223k\212w\333\346\345 f\243au\271\347\202\344", + "pu\244ic \332\324\374loc\366\332\324\313\224\225\370\346\324\360", + "\346\200\332\324\313\224\225\323\205i\207\215iz\232\360", + "pu\244ic \246\203\313\224\225\217tur\333\257y\203\360", + "a\236i\265ou\203\364\213t; \350\264ov\211rid\200\301\217qui\217\204\360", + "nu\236\267\320\270t\203do\324\225\347\275 \334i\216\012", + "\250\261\311\232\350\264\371m\200id\214\207\335\211\012", + "\304\214um\211\327 \217qui\217\203\223iqu\200\350g\012", + "\262\370\217qui\217\204p\206a\310t\211\203aft\267\341\216\366p\206a\310t\211\263", + "\322\321\204\225\272\204\310\236\211\234 \376\230ruc\201\221\012", + "\317 do\324\225\370\252\347\275\205\264\367\012", + "\361\345 sho\321\204\323\221 \376new-\230y\363\231\352\206\327\263", + "\316sho\321\204\225\370\365\250plici\201\217tur\333\367\012", + "\304pro\271\367\203do \225\347\275\012", + "s\261cif\224ei\237\267\215l \340\233\226\202\203\243\202l\224\237\200l\342\201\340\233\226\202\012", + "\262\272\204\316\343", + "\316w\353\215\217ad\224\334\232\330\237\301\343", + "\262\272\204\213\224\310\237od\203f\243\343", + "\262\272\204\310\237o\204\243pr\354t\224\210.\343", + "\262c\215l \310\237od\203\330\365\257y\012", + "\262c\215l \310\237od\203\330\252\246\012", + "\310\237o\204\306\370\252\335rs\201\337\322mpa\207\244\200\351\237 \237\200\316\373(\210\235", + "\316\371m\200\306\230\206\201\351\237 \365upp\211c\342\200lett\211\012", + "\316\307\203\215\217ad\224be\214 \334\232(\326vio\242l\224se\214 \353\210\235", + "\250\261\311\232id\214\207\335\267- d\273you \375ge\201\252\367?\012", + "\364ru\311\243\304\306\217tur\333\350\264\343", + "\262\334\200\364ru\311\243\375\234; \215\217ad\224\250i\230\203\353\252\343", + "miss\205\264\367\303\243\316\306\370\237\200sam\200\371m\200\353\316\221\012", + "\262\242\200\231lete\303\316\316\307\203\212 \231\230ru\311\222\012", + "\212 \310\237od\313p \243\352\342\203w\353fo\223\204f\243\343", + "\212 \231\230ru\311\243w\353fo\223\204f\243\316\343", + "\231\230ru\311\222\203\306\323\371\207\336\246\263", + "\231\230ru\311\222\203\262\370\250t\240 \270t\263", + "\310\237od\313p \374\352\342\203\226gn\227u\217\203\306\242\200new-\230y\363\373\231\352\206\327\263", + "\262s\261cif\224\312\340\233\226\202\203\330bo\237 \373\374\371\310\012", + "\250\261\311\232\373\250\326\274\202\012", + "f\321ly-qu\215i\335\232\371m\345 \301\271o l\202g\303wo\321\204\323tr\241\227\232\271\344", + "\223\250\261\311\232\271k\214\303\250\261\311\232\310\237o\204\243pr\354\254\012", + "\250\261\311\232\042\371\207ve\357\243\042get\042\012", + "\316f\243\316\215\217ad\224\250i\230\263", + "pr\354t\224gett\211\203\262accep\201\250t\240 \270t\263", + "\316\306\370\237\200sam\200\217tur\333\373\353pr\354t\224\316(\210\235", + "\262mix \310\237od\313p\203\374\352\342s\324\351\237 \205h\211it\213c\355", + "\262\322\211c\200\246\203\271 \251ue\263", + "\262\322\211c\200objec\201\373\316\271 n\202-objec\201\373\343", + "\262\322\211c\200n\202-objec\201\373\316\271 objec\201\373\343", + "\262\322\211c\200\223\217l\227\232objec\201\367\203\316\374\343", + "\373mis\347\275 (\316\374\210\235", + "\262\242\200\365objec\201\376\252m\321\207-\350\264s\372e\311\222\012", + "\257y\203\206\200\225supp\222t\232\353\217tur\333\367\263", + "\262mix \217f\211\214c\200\374\312\367\263", + "\315s\201w\353s\261ci\335\232t\351c\355", + "\322\321\204\225\272\204\361\345\012", + "new-\230y\363\312\367\203\262s\261cif\224\340\233\226\330\362\324\353p\206\201\320\237eir \367\012", + "\371\207ves\303\375w\206ds\303\374pu\244ic \246\203\262\217tur\333\257y\263", + "\305\373\231\352\206\327\012" #endif }; @@ -351,18 +353,18 @@ static char *fatalmsg[] = { /*170*/ "assertion failed: %s\n", /*171*/ "user error: %s\n", #else - "\262\217a\204from \336le:\345", - "\262writ\200\271 \336le:\345", - "t\276\200ov\211flow:\345", - "\205suf\336ci\214\201\306m\222y\012", - "\311\343se\236l\267\205\230ruc\216\345", - "num\211ic ov\211flow\320\250ce\313\376capaci\261\012", - "\323mpil\231scrip\201\250ce\313\203\237\200\312ximum \306m\222\224\361\200(%l\204bytes\235", - "\271o m\213\224\211r\242\306ssag\314\327\202\200l\205\354", - "\323\232pag\200\312pp\376\336\362\225fo\223d\012", - "\311p\227h:\345", - "\343s\211\244fail\313: \344", - "\241\267\211r\222: \344" + "\262\217a\204from \335le:\344", + "\262writ\200\271 \335le:\344", + "t\276\200ov\211flow:\344", + "\205suf\335ci\214\201\310m\222y\012", + "\305\342se\236l\267\205\230ruc\216\344", + "num\211ic ov\211flow\303\250ce\314\205\264capaci\254\012", + "\322mpil\232scrip\201\250ce\314\203\237\200\313ximum \310m\222\224\362\200(%l\204bytes\235", + "\271o m\213\224\211r\243\310ssag\324\330\202\200l\205\355", + "\322\231pag\200\313pp\205\264\335\363\225fo\223d\012", + "\305p\227h:\344", + "\342s\211\216 fail\314: \343", + "\242\267\211r\222: \343" #endif }; @@ -406,43 +408,43 @@ static char *warnmsg[] = { /*235*/ "public function lacks forward declaration (symbol \"%s\")\n", /*236*/ "unknown parameter in substitution (incorrect #define pattern)\n" #else - "\317 \300tr\243\227\231\271 %\204\274\335\307\211\263", - "\217\334i\244\321\363\213t/\312cro \360", - "nu\236\267\321\270t\203do\314\225\350\274 \334i\216\012", - "\257 \300nev\267\241\313:\345", - "\257 \300a\273gn\231\252\251u\200\237a\201\300nev\267\241\313:\345", - "\217d\223d\213\201\323\232: \363\213\201\250\326\273\327\300z\211o\012", - "\217d\223d\213\201te\230: \363\213\201\250\326\273\327\300n\202-z\211o\012", - "\223k\212w\333#p\240g\312\012", - "\302\351\375\332\264\217s\322\201\241\231bef\222\200\334i\216\320f\222c\376\217p\206s\354", - "\373\234 sho\322\204\217tur\333\252\251u\354", - "po\273\245\200\241\200\321\257 bef\222\200\205i\207\215iza\216:\345", - "po\273\245\224\223\205t\214d\231a\273gn\233t\012", - "po\273\245\224\223\205t\214d\231bit\351s\200\353a\216\012", - "\332\264mis\350\274\012", - "po\273\245\224\252\042\363\356\310\340w\352\205t\214\232d:\345", - "\250\326\273\327\305\203\212 effe\307\012", - "ne\230\231\323m\233t\012", - "loos\200\205d\214\332\216\012", - "\247\204\230y\362pro\271\366\203\241\231\351\375\342\216\365semic\247umn\263", - "loc\365\331\346 s\305dow\203\252\331\200a\201\252\326c\313\376lev\371\012", - "\250\326\273\327\351\375\332\264ov\211rid\200\304ap\260\206 betwe\214 p\206\214\237ese\263", - "lab\371 \370m\346 s\305dow\203\332\264\370\306\012", - "nu\236\267\321\341git\203\250ce\313\203\240\216\365nu\236\267\326ci\226\202\012", - "\217d\223d\213\201\042\361e\277\042: \340\361\200\300\215way\2031 \360", - "\205\232t\211m\205\227\200\310\361\200\374\042\361e\277\356\250\326\273\327\360", - "\223\217a\274\276\200\323\232\012", - "\252\331\200\300a\273gn\231\271 its\371f \360", - "m\222\200\205i\207\215iz\211\203\237\364\214um \336\371d\263", - "l\214g\375\321\205i\207\215iz\267\250ce\313\203\361\200\321\237\200\214um \336\371d\012", - "\205\232x \332\264mis\350\274 \360", - "\212 imple\233\332\244f\242\347\346 \374\373\234\320\212 f\215l-back\012", - "\347\200s\260ci\336ca\244\327f\222w\206\204\232\357\335\244\300ig\212\217d\012", - "outpu\201\336\362\300writt\214\320bu\201\351\375\323mpac\201\214\323d\376\341s\276\313\012", - "\347\200\331\346 s\305dow\203\252glob\365\331\354", - "\317 \300m\206k\231\352\232\326c\227\313: \344", - "pu\245ic \302lack\203f\222w\206\204\232\357\335\244\360", - "\223k\212w\333p\335\306t\267\374subs\207tu\244(\205c\222\217c\201#\334\200p\227t\211n\235" + "\317 \301tr\241\227\232\271 %\204\275\206a\311\211\263", + "\217\334i\216 \320\364\213t/\313cro \360", + "nu\236\267\320\270t\203do\324\225\347\275 \334i\216\012", + "\260 \301nev\267\242\314:\344", + "\260 \301a\274gn\232\252\251u\200\237a\201\301nev\267\242\314:\344", + "\217d\223d\213\201\322\231: \364\213\201\250\326\274\330\301z\211o\012", + "\217d\223d\213\201te\230: \364\213\201\250\326\274\330\301n\202-z\211o\012", + "\223k\212w\333#p\240g\313\012", + "\304\351\237 \350\264\217s\321\201\242\232be\375\200\334i\216\303\375c\205\264\217p\206s\355", + "\246\234 sho\321\204\217tur\333\252\251u\355", + "po\274\244\200\242\200\320\260 be\375\200\205i\207\215iz\327:\344", + "po\274\244\224\223\205t\214\231\204a\274gn\233t\012", + "po\274\244\224\223\205t\214\231\204bit\351s\200\354\327\012", + "\350\264mis\347\275\012", + "po\274\244\224\252\042\364\357\312\337w\353\205t\214\231d:\344", + "\250\326\274\330\307\203\212 effe\311\012", + "ne\230\232\322m\233t\012", + "loos\200\205d\214t\327\012", + "\247\204\230y\363pro\271\367\203\242\232\351\237 \341\216\366semic\247umn\263", + "loc\366\332\345 s\307dow\203\252\332\200a\201\252\326c\314\205\264lev\372\012", + "\250\326\274\330\351\237 \350\264ov\211rid\200\306ap\261\206 betwe\214 p\206\214\237ese\263", + "lab\372 \371m\345 s\307dow\203\350\264\371\310\012", + "nu\236\267\320\340git\203\250ce\314\203\240\216\366nu\236\267\326ci\226\202\012", + "\217d\223d\213\201\042\362e\300\042: \337\362\200\301\215way\2031 \360", + "\205\231t\211m\205\227\200\312\362\200\376\042\362e\300\357\250\326\274\330\360", + "\223\217a\275\276\200\322\231\012", + "\252\332\200\301a\274gn\232\271 its\372f \360", + "m\222\200\205i\207\215iz\211\203\237\365\214um \335\372d\263", + "l\214g\237 \320\205i\207\215iz\267\250ce\314\203\362\200\320\237\200\214um \335\372d\012", + "\205\231x \350\264mis\347\275 \360", + "\212 imple\233t\327 f\243\346\345 \376\246\234\303\212 f\215l-back\012", + "\346\200s\261ci\335c\327 \330\375w\206\204\231\352\206\327 \301ig\212\217d\012", + "outpu\201\335\363\301writt\214\303bu\201\351\237 \322mpac\201\214\322d\205\264\340s\276\314\012", + "\346\200\332\345 s\307dow\203\252glob\366\332\355", + "\317 \301m\206k\232\353\231\326c\227\314: \343", + "pu\244ic \304lack\203\375w\206\204\231\352\206\327 \360", + "\223k\212w\333p\206a\310t\267\376subs\207tu\216 (\205c\222\217c\201#\334\200p\227t\211n\235" #endif };