pike.git/
src/
svalue.h
Branch:
Tag:
Non-build tags
All tags
No tags
2011-12-28
2011-12-28 17:55:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>
d5109894c1ce53b45d45e9cae67983ad88177a2d (
12
lines) (+
8
/-
4
)
[
Show
|
Annotate
]
Branch:
7.9
Run-time: Fixed bug where prototype-only efuns were regarded as destructed objects.
359:
#define IS_UNDEFINED(X) (check_svalue (X), TYPEOF(*(X))==PIKE_T_INT&&SUBTYPEOF(*(X))==NUMBER_UNDEFINED) #define IS_DESTRUCTED(X) \
-
((TYPEOF(*(X)) == PIKE_T_OBJECT || TYPEOF(*(X))==PIKE_T_FUNCTION) && !(X)->u.object->prog)
+
((
(
TYPEOF(*(X)) == PIKE_T_OBJECT
)
||
\
+
((
TYPEOF(*(X))==PIKE_T_FUNCTION) &&
\
+
(SUBTYPEOF(*(X))
!
= FUNCTION_BUILTIN))) && !
(X)->u.object->prog)
#define check_destructed(S) \ do{ \
374:
/* var MUST be a variable!!! */ #define safe_check_destructed(var) do{ \
-
if((
TYPEOF(*
var)
==
PIKE_T_OBJECT
||
TYPEOF(*var)==PIKE_T_FUNCTION)
&&
!var->u.object->prog)
\
-
var=&svalue_int_zero; \
+
if(
IS_DESTRUCTED
(var)
)
\
+
var=&svalue_int_zero;
\
}while(0)
-
+
/* FIXME: Is this actually used for functions? */
#define check_short_destructed(U,T) \ do{ \ union anything *_u=(U); \