pike.git/
src/
docode.c
Branch:
Tag:
Non-build tags
All tags
No tags
2002-11-23
2002-11-23 16:36:44 by Martin Stjernholm <mast@lysator.liu.se>
f5cfc3f772cf6c65f72377fd3f113a04a5061557 (
17
lines) (+
9
/-
8
)
[
Show
|
Annotate
]
Branch:
7.9
Fixed order of checks in find_local_frame to avoid incorrect dereferences.
Rev: src/docode.c:1.160
2:
|| This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: docode.c,v 1.
159
2002/11/
22
15
:
45
:
48
grubba
Exp $
+
|| $Id: docode.c,v 1.
160
2002/11/
23
16
:
36
:
44
mast
Exp $
*/ #include "global.h"
-
RCSID("$Id: docode.c,v 1.
159
2002/11/
22
15
:
45
:
48
grubba
Exp $");
+
RCSID("$Id: docode.c,v 1.
160
2002/11/
23
16
:
36
:
44
mast
Exp $");
#include "las.h" #include "program.h" #include "pike_types.h"
444:
Inside #if 1
* * * Test if we have a valid current function. *
-
* * Check that the function isn't varargs.
-
*
+
* * Quick check if id is the current function. * * * Check if id is an alternate reference to the current function.
-
+
*
+
* * Check that the function isn't varargs.
*/ if((Pike_compiler->compiler_frame->current_function_number >= 0) &&
-
(!(Pike_compiler->new_program->
-
identifiers[ref->identifier_offset].identifier_flags &
-
IDENTIFIER_VARARGS)) &&
+
((id == Pike_compiler->compiler_frame->current_function_number) || ((!ref->inherit_offset) && (ref->identifier_offset == Pike_compiler->new_program-> identifier_references[Pike_compiler->compiler_frame->
-
current_function_number].identifier_offset))))
+
current_function_number].identifier_offset)))
&&
+
(!(Pike_compiler->new_program->
+
identifiers[ref->identifier_offset].identifier_flags &
+
IDENTIFIER_VARARGS
)
))
{ int n=count_args(args); if(n == Pike_compiler->compiler_frame->num_args)