projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed some memory leaks.
[pspp-builds.git]
/
src
/
val-labs.c
diff --git
a/src/val-labs.c
b/src/val-labs.c
index 882f26e625933b7364510bb112ef57f2e0edf2af..1af46a2c5d81496e5bc5f5156805a395d3002883 100644
(file)
--- a/
src/val-labs.c
+++ b/
src/val-labs.c
@@
-57,12
+57,19
@@
do_value_labels (int erase)
{
struct variable **vars; /* Variable list. */
int var_cnt; /* Number of variables. */
{
struct variable **vars; /* Variable list. */
int var_cnt; /* Number of variables. */
+ int parse_err=0; /* true if error parsing variables */
lex_match ('/');
while (token != '.')
{
lex_match ('/');
while (token != '.')
{
- parse_variables (default_dict, &vars, &var_cnt, PV_SAME_TYPE);
+ parse_err = !parse_variables (default_dict, &vars, &var_cnt,
+ PV_SAME_TYPE) ;
+ if (var_cnt < 1)
+ {
+ free(vars);
+ return CMD_FAILURE;
+ }
if (!verify_val_labs (vars, var_cnt))
goto lossage;
if (erase)
if (!verify_val_labs (vars, var_cnt))
goto lossage;
if (erase)
@@
-85,7
+92,7
@@
do_value_labels (int erase)
return CMD_TRAILING_GARBAGE;
}
return CMD_TRAILING_GARBAGE;
}
- return CMD_SUCCESS;
+ return
parse_err ? CMD_PART_SUCCESS_MAYBE :
CMD_SUCCESS;
lossage:
free (vars);
lossage:
free (vars);
@@
-144,7
+151,7
@@
get_label (struct variable **vars, int var_cnt)
lex_error (_("expecting string"));
return 0;
}
lex_error (_("expecting string"));
return 0;
}
- st_bare_pad_copy (value.s, ds_
value
(&tokstr), MAX_SHORT_STRING);
+ st_bare_pad_copy (value.s, ds_
c_str
(&tokstr), MAX_SHORT_STRING);
}
else
{
}
else
{
@@
-167,7
+174,7
@@
get_label (struct variable **vars, int var_cnt)
msg (SW, _("Truncating value label to 60 characters."));
ds_truncate (&tokstr, 60);
}
msg (SW, _("Truncating value label to 60 characters."));
ds_truncate (&tokstr, 60);
}
- label = ds_
value
(&tokstr);
+ label = ds_
c_str
(&tokstr);
for (i = 0; i < var_cnt; i++)
val_labs_replace (vars[i]->val_labs, value, label);
for (i = 0; i < var_cnt; i++)
val_labs_replace (vars[i]->val_labs, value, label);