X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Frecode.c;h=ee164b9c7c7889ea04bd6ecf12f941bfc9b5daaf;hb=77cbf2d7d1e5712d4ef952f265ed5c2917fc3f68;hp=543e45ada4618ef69e602d5440e0af76eb66e994;hpb=60d7d619ee7885ad065f178eb0cf1e5d432b1921;p=pspp diff --git a/src/recode.c b/src/recode.c index 543e45ada4..ee164b9c7c 100644 --- a/src/recode.c +++ b/src/recode.c @@ -34,6 +34,7 @@ /* Definitions. */ +/* Type of source value for RECODE. */ enum { RCD_END, /* sentinel value */ @@ -104,8 +105,8 @@ struct recode_trns static int parse_dest_spec (struct rcd_var * rcd, union value *v, size_t *max_dst_width); static int parse_src_spec (struct rcd_var * rcd, int type, size_t max_src_width); -static int recode_trns_proc (struct trns_header *, struct ccase *); -static void recode_trns_free (struct trns_header *); +static trns_proc_func recode_trns_proc; +static trns_free_func recode_trns_free; static double convert_to_double (char *, int); #if DEBUGGING @@ -487,6 +488,11 @@ parse_dest_spec (struct rcd_var * rcd, union value * v, size_t *max_dst_width) v->c = NULL; } } + else + { + lex_error (_("expecting output value")); + return 0; + } if ((rcd->flags & RCD_DEST_MASK) == RCD_DEST_ERROR) rcd->flags |= flags; @@ -772,13 +778,15 @@ find_src_string (struct rcd_var * v, struct ccase * c) } static int -recode_trns_proc (struct trns_header * t, struct ccase * c) +recode_trns_proc (struct trns_header * t, struct ccase * c, + int case_num UNUSED) { struct rcd_var *v; - struct coding *cp; for (v = ((struct recode_trns *) t)->codings; v; v = v->next) { + struct coding *cp; + switch (v->flags & RCD_SRC_MASK) { case RCD_SRC_NUMERIC: @@ -787,6 +795,8 @@ recode_trns_proc (struct trns_header * t, struct ccase * c) case RCD_SRC_STRING: cp = find_src_string (v, c); break; + default: + assert (0); } if (!cp) continue;