Fix various bugs in global newdecl support.

This commit is contained in:
David Anderson 2014-07-04 14:31:56 -07:00
parent 19815d42c3
commit 3cf9e56a19
8 changed files with 283 additions and 237 deletions

View File

@ -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

View File

@ -1200,4 +1200,4 @@ public Native_GetNominatedMapList(Handle:plugin, numParams)
}
return;
}
}

View File

@ -36,7 +36,7 @@
#include <sourcemod>
#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;

View File

@ -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);

View File

@ -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

View File

@ -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",

View File

@ -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 */

View File

@ -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
};