Commit 2d85cd88 authored by Morten Welinder's avatar Morten Welinder

xls: fuzzed file fix re shared formulas.

parent dd19c19d
2015-06-29 Morten Welinder <terra@gnome.org>
* src/func.c (function_iterate_argument_values): Improve name
handling. Part of #751660.
2015-06-28 Morten Welinder <terra@gnome.org>
* src/value-sheet.c (value_area_get_width, value_area_get_height):
......
......@@ -30,7 +30,7 @@ Morten:
[#749424] [#749917] [#749919] [#750043] [#750044] [#750046]
[#750811] [#750810] [#750857] [#750864] [#750862] [#750858]
[#751126] [#751254] [#751253] [#750851] [#751258] [#751259]
[#751502] [#751390] [#751579] [#751659]
[#751502] [#751390] [#751579] [#751659] [#751660]
* Make solver check linearity of model.
* Fix xls saving of marker style. [#749185]
* Make compilation with clang work again. [#749138]
......
2015-06-29 Morten Welinder <terra@gnome.org>
* ms-excel-read.c (excel_formula_shared): Handle duplicates in
shared formula tables. This shouldn't happen in proper files.
Fixes part of #751660.
* ms-formula-read.c (excel_parse_formula1): Survive bogus array
constant. Fixes #751659.
......
......@@ -2806,7 +2806,7 @@ excel_formula_shared (BiffQuery *q, ExcelReadSheet *esheet, GnmCell *cell)
dt->c_in.col = GSF_LE_GET_GUINT16 (q->data + 10);
dt->r_in.row = GSF_LE_GET_GUINT16 (q->data + 12);
dt->r_in.col = GSF_LE_GET_GUINT16 (q->data + 14);
g_hash_table_insert (esheet->tables, &dt->table.start, dt);
g_hash_table_replace (esheet->tables, &dt->table.start, dt);
args = gnm_expr_list_append (args, gnm_expr_new_cellref (
gnm_cellref_init (&ref, NULL,
......
......@@ -2317,13 +2317,16 @@ function_iterate_argument_values (GnmEvalPos const *ep,
/* need to drill down into names to handle things like
* sum(name) with name := (A:A,B:B) */
while (GNM_EXPR_GET_OPER (expr) == GNM_EXPR_OP_NAME) {
expr = expr->name.name->texpr->expr;
GnmExprTop const *texpr = expr->name.name->texpr;
expr = texpr ? texpr->expr : NULL;
if (expr == NULL) {
if (strict)
return value_new_error_REF (ep);
continue;
break;
}
}
if (!expr)
continue;
/* Handle sets as a special case */
if (GNM_EXPR_GET_OPER (expr) == GNM_EXPR_OP_SET) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment