* ch-lang.c (evaluate_subexp_chill case MULTI_SUBSCRIPT): Error
if "function" is pointer to non-function. Fixes PR chill/9095.
This commit is contained in:
parent
4b29551786
commit
02e6e53d84
|
@ -1,3 +1,8 @@
|
|||
Mon Mar 4 23:44:16 1996 Per Bothner <bothner@kalessin.cygnus.com>
|
||||
|
||||
* ch-lang.c (evaluate_subexp_chill case MULTI_SUBSCRIPT): Error
|
||||
if "function" is pointer to non-function.
|
||||
|
||||
Mon Mar 4 17:47:03 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* top.c (print_gdb_version): Update copyright year.
|
||||
|
|
|
@ -423,6 +423,10 @@ evaluate_subexp_chill (expect_type, exp, pos, noside)
|
|||
switch (TYPE_CODE (type))
|
||||
{
|
||||
case TYPE_CODE_PTR:
|
||||
type = check_typedef (TYPE_TARGET_TYPE (type));
|
||||
if (!type || TYPE_CODE (type) || TYPE_CODE_FUNC)
|
||||
error ("reference value used as function");
|
||||
/* ... fall through ... */
|
||||
case TYPE_CODE_FUNC:
|
||||
/* It's a function call. */
|
||||
if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||
|
@ -433,16 +437,11 @@ evaluate_subexp_chill (expect_type, exp, pos, noside)
|
|||
argvec = (value_ptr *) alloca (sizeof (value_ptr) * (nargs + 2));
|
||||
argvec[0] = arg1;
|
||||
tem = 1;
|
||||
if (type && TYPE_CODE (type) == TYPE_CODE_PTR)
|
||||
type = check_typedef (TYPE_TARGET_TYPE (type));
|
||||
if (type && TYPE_CODE (type) == TYPE_CODE_FUNC)
|
||||
for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
|
||||
{
|
||||
for (; tem <= nargs && tem <= TYPE_NFIELDS (type); tem++)
|
||||
{
|
||||
argvec[tem]
|
||||
= evaluate_subexp_chill (TYPE_FIELD_TYPE (type, tem-1),
|
||||
exp, pos, noside);
|
||||
}
|
||||
argvec[tem]
|
||||
= evaluate_subexp_chill (TYPE_FIELD_TYPE (type, tem-1),
|
||||
exp, pos, noside);
|
||||
}
|
||||
for (; tem <= nargs; tem++)
|
||||
argvec[tem] = evaluate_subexp_with_coercion (exp, pos, noside);
|
||||
|
|
Loading…
Reference in New Issue