X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fexpressions%2Foptimize.c;h=d893d1e9957233dfdd101557d2f424b9c597a44e;hb=c67cea6fc7f9b928ea297e8e784a0306c7f287b3;hp=7d683d0181f55d5dcff4355eaadc0d4548d76c5f;hpb=8d023f3691564159dfd300cc92f386b47186bf50;p=pspp diff --git a/src/language/expressions/optimize.c b/src/language/expressions/optimize.c index 7d683d0181..d893d1e995 100644 --- a/src/language/expressions/optimize.c +++ b/src/language/expressions/optimize.c @@ -163,6 +163,13 @@ get_number_args (struct expr_node *n, size_t arg_idx, size_t n_args, return d; } +static int +get_integer_arg (struct expr_node *n, size_t arg_idx) +{ + double number = n->args[arg_idx]->number; + return number == SYSMIS ? INT_MIN : number; +} + static struct substring get_string_arg (struct expr_node *n, size_t arg_idx) { @@ -184,13 +191,13 @@ get_string_args (struct expr_node *n, size_t arg_idx, size_t n_args, return s; } -static const struct fmt_spec * +static struct fmt_spec get_format_arg (struct expr_node *n, size_t arg_idx) { assert (arg_idx < n->n_args); assert (n->args[arg_idx]->type == OP_ni_format || n->args[arg_idx]->type == OP_no_format); - return &n->args[arg_idx]->format; + return n->args[arg_idx]->format; } static const struct expr_node * @@ -240,10 +247,9 @@ emit_string (struct expression *e, struct substring s) } static void -emit_format (struct expression *e, const struct fmt_spec *f) +emit_format (struct expression *e, struct fmt_spec f) { - allocate_aux (e, OP_format)->format = pool_clone (e->expr_pool, - f, sizeof *f); + allocate_aux (e, OP_format)->format = f; } static void @@ -333,7 +339,7 @@ flatten_composite (struct expr_node *n, struct expression *e) case OP_ni_format: case OP_no_format: - emit_format (e, &arg->format); + emit_format (e, arg->format); break; case OP_pos_int: