mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-09-30 03:56:59 +00:00
Correct DEFCNT value for lambda functions
This commit is contained in:
parent
c603f9207e
commit
cfe372cb39
@ -1478,7 +1478,7 @@ int parse_mods(void)
|
|||||||
emit_moddep(0, 0);
|
emit_moddep(0, 0);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
int parse_lambda(void)
|
iint parse_lambda(void)
|
||||||
{
|
{
|
||||||
int func_tag;
|
int func_tag;
|
||||||
int cfnparms;
|
int cfnparms;
|
||||||
@ -1494,7 +1494,6 @@ int parse_lambda(void)
|
|||||||
* Parse parameters and return value count
|
* Parse parameters and return value count
|
||||||
*/
|
*/
|
||||||
cfnparms = 0;
|
cfnparms = 0;
|
||||||
func_tag = tag_new(DEF_TYPE);
|
|
||||||
if (scan() == OPEN_PAREN_TOKEN)
|
if (scan() == OPEN_PAREN_TOKEN)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
@ -1536,18 +1535,24 @@ int parse_lambda(void)
|
|||||||
lambda_seq[lambda_cnt] = parse_expr(NULL, NULL);
|
lambda_seq[lambda_cnt] = parse_expr(NULL, NULL);
|
||||||
scan_rewind(tokenstr);
|
scan_rewind(tokenstr);
|
||||||
}
|
}
|
||||||
lambda_cparams[lambda_cnt] = cfnparms;
|
|
||||||
lambda_tag[lambda_cnt] = func_tag;
|
|
||||||
sprintf(lambda_id[lambda_cnt], "_LAMBDA%04d", lambda_num++);
|
sprintf(lambda_id[lambda_cnt], "_LAMBDA%04d", lambda_num++);
|
||||||
if (idglobal_lookup(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt])) >= 0)
|
if (idglobal_lookup(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt])) >= 0)
|
||||||
|
{
|
||||||
|
func_tag = lambda_tag[lambda_cnt];
|
||||||
idfunc_set(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt]), DEF_TYPE | funcparms_type(cfnparms), func_tag); // Override any predef type & tag
|
idfunc_set(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt]), DEF_TYPE | funcparms_type(cfnparms), func_tag); // Override any predef type & tag
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
func_tag = tag_new(DEF_TYPE);
|
||||||
|
lambda_tag[lambda_cnt] = func_tag;
|
||||||
|
lambda_cparams[lambda_cnt] = cfnparms;
|
||||||
idfunc_add(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt]), DEF_TYPE | funcparms_type(cfnparms), func_tag);
|
idfunc_add(lambda_id[lambda_cnt], strlen(lambda_id[lambda_cnt]), DEF_TYPE | funcparms_type(cfnparms), func_tag);
|
||||||
|
}
|
||||||
lambda_cnt++;
|
lambda_cnt++;
|
||||||
idlocal_restore();
|
idlocal_restore();
|
||||||
return (func_tag);
|
return (func_tag);
|
||||||
}
|
}
|
||||||
int parse_defs(void)
|
nt parse_defs(void)
|
||||||
{
|
{
|
||||||
char c, *idstr;
|
char c, *idstr;
|
||||||
int idlen, func_tag, cfnparms, cfnvals, type = GLOBAL_TYPE, pretype;
|
int idlen, func_tag, cfnparms, cfnvals, type = GLOBAL_TYPE, pretype;
|
||||||
|
Loading…
Reference in New Issue
Block a user