pike.git/
src/
interpret.c
Branch:
Tag:
Non-build tags
All tags
No tags
2003-08-04
2003-08-04 15:17:28 by Martin Stjernholm <mast@lysator.liu.se>
a9b1f2e0728351f4d1036e757d8d0f46e814a10b (
22
lines) (+
18
/-
4
)
[
Show
|
Annotate
]
Branch:
7.9
Oops, safe_apply shouldn't throw errors, it should report them.
Rev: src/interpret.c:1.315
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: interpret.c,v 1.
314
2003/08/04 15:
05
:
09
mast Exp $
+
|| $Id: interpret.c,v 1.
315
2003/08/04 15:
17
:
28
mast Exp $
*/ #include "global.h"
-
RCSID("$Id: interpret.c,v 1.
314
2003/08/04 15:
05
:
09
mast Exp $");
+
RCSID("$Id: interpret.c,v 1.
315
2003/08/04 15:
17
:
28
mast Exp $");
#include "interpret.h" #include "object.h" #include "program.h"
2023:
id = find_identifier(fun, o->prog); if (id >= 0) safe_apply_low2(o, id, args, 1);
-
else
-
Pike
_
error
("Cannot call unknown function \"%s\".\n", fun);
+
else
{
+
char buf[4096];
+
#ifdef HAVE
_
VSNPRINTF
+
vsnprintf
(
buf, 4090,
"Cannot call unknown function \"%s\".\n", fun);
+
#else
+
VSPRINTF(buf, "Cannot call unknown function \"%s\".\n", fun);
+
#endif
+
if ((size_t) strlen (buf) >= (size_t) sizeof (buf))
+
Pike_fatal ("Buffer overflow in safe_apply()\n");
+
push_error (buf);
+
free_svalue (&throw_value);
+
move_svalue (throw_value, --Pike_sp);
+
call_handle_error();
+
push_int (0);
}
-
+
}
/* Returns nonzero if the function was called in some handler. */ PMOD_EXPORT int low_unsafe_apply_handler(const char *fun,