[gnumeric] Avoid analysis tool crashes if required plugins are not loaded



commit ef53e73ef4523adadc59ff0bd49561cce8d643ca
Author: Andreas J. Guelzow <aguelzow pyrshep ca>
Date:   Thu Jun 18 14:14:52 2009 -0600

    Avoid analysis tool crashes if required plugins are not loaded
    
    2009-06-18 Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* *.c In all files in this directory replace gnm_func_lookup
    	  with gnm_func_lookup_or_add_placeholder to avoid crashes
    	  when plugins are not loaded.

 NEWS                               |    1 +
 src/tools/ChangeLog                |    6 +
 src/tools/analysis-anova.c         |   40 ++++----
 src/tools/analysis-chi-squared.c   |   16 ++--
 src/tools/analysis-exp-smoothing.c |   62 ++++++------
 src/tools/analysis-frequency.c     |   14 ++--
 src/tools/analysis-histogram.c     |   14 ++--
 src/tools/analysis-kaplan-meier.c  |   14 ++--
 src/tools/analysis-tools.c         |  178 ++++++++++++++++++------------------
 9 files changed, 176 insertions(+), 169 deletions(-)
---
diff --git a/NEWS b/NEWS
index 37cf94c..d3b375b 100644
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,7 @@ Andreas:
 	* Let the sort dialog guess whether there is a header
 	* Fix xls import of sheet labels [#586066]
 	* Fix html export [#586028]
+	* Avoid analysis tool crashes if required plugins are not loaded
 
 Jody:
 	* GOString start of richtext and phonetic support.
diff --git a/src/tools/ChangeLog b/src/tools/ChangeLog
index 6e0e80d..7f4d350 100644
--- a/src/tools/ChangeLog
+++ b/src/tools/ChangeLog
@@ -1,3 +1,9 @@
+2009-06-18 Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* *.c In all files in this directory replace gnm_func_lookup
+	  with gnm_func_lookup_or_add_placeholder to avoid crashes
+	  when plugins are not loaded.
+
 2009-06-07  Andreas J. Guelzow <aguelzow pyrshep ca>
 
 	* dao.c (dao_adjust): avoid calling gnm_sheet_get_max_* with
diff --git a/src/tools/analysis-anova.c b/src/tools/analysis-anova.c
index 4cda737..750223c 100644
--- a/src/tools/analysis-anova.c
+++ b/src/tools/analysis-anova.c
@@ -95,25 +95,25 @@ analysis_tool_anova_two_factor_no_rep_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_fdist;
 	GnmFunc *fd_finv;
 
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_sumsq = gnm_func_lookup ("SUMSQ", NULL);
+	fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", NULL, FALSE);
 	gnm_func_ref (fd_sumsq);
-	fd_average = gnm_func_lookup ("AVERAGE", NULL);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_fdist = gnm_func_lookup ("FDIST", NULL);
+	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
 	gnm_func_ref (fd_fdist);
-	fd_finv = gnm_func_lookup ("FINV", NULL);
+	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
 	gnm_func_ref (fd_finv);
 
 	dao_set_merge (dao, 0, 0, 4, 0);
@@ -433,25 +433,25 @@ analysis_tool_anova_two_factor_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_fdist;
 	GnmFunc *fd_finv;
 
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_sumsq = gnm_func_lookup ("SUMSQ", NULL);
+	fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", NULL, FALSE);
 	gnm_func_ref (fd_sumsq);
-	fd_average = gnm_func_lookup ("AVERAGE", NULL);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_fdist = gnm_func_lookup ("FDIST", NULL);
+	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
 	gnm_func_ref (fd_fdist);
-	fd_finv = gnm_func_lookup ("FINV", NULL);
+	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
 	gnm_func_ref (fd_finv);
 
 	dao_set_merge (dao, 0, 0, 4, 0);
diff --git a/src/tools/analysis-chi-squared.c b/src/tools/analysis-chi-squared.c
index 358b618..e7f8964 100644
--- a/src/tools/analysis-chi-squared.c
+++ b/src/tools/analysis-chi-squared.c
@@ -60,21 +60,21 @@ analysis_tool_chi_squared_engine_run (data_analysis_output_t *dao,
 		? _("[>=5]\"Test of Independence\";[<5][Red]\"Invalid Test of Independence\"") 
 		: _("[>=5]\"Test of Homogeneity\";[<5][Red]\"Invalid Test of Homogeneity\"");
 
-	fd_mmult = gnm_func_lookup ("MMULT", NULL);
+	fd_mmult = gnm_func_lookup_or_add_placeholder ("MMULT", NULL, FALSE);
 	gnm_func_ref (fd_mmult);
-	fd_row = gnm_func_lookup ("ROW", NULL);
+	fd_row = gnm_func_lookup_or_add_placeholder ("ROW", NULL, FALSE);
 	gnm_func_ref (fd_row);
-	fd_transpose = gnm_func_lookup ("TRANSPOSE", NULL);
+	fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE", NULL, FALSE);
 	gnm_func_ref (fd_transpose);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_min = gnm_func_lookup ("MIN", NULL);
+	fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
 	gnm_func_ref (fd_min);
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_chiinv = gnm_func_lookup ("CHIINV", NULL);
+	fd_chiinv = gnm_func_lookup_or_add_placeholder ("CHIINV", NULL, FALSE);
 	gnm_func_ref (fd_chiinv);
-	fd_chidist = gnm_func_lookup ("CHIDIST", NULL);
+	fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST", NULL, FALSE);
 	gnm_func_ref (fd_chidist);
 
 	dao_set_italic (dao, 0, 1, 0, 4);
diff --git a/src/tools/analysis-exp-smoothing.c b/src/tools/analysis-exp-smoothing.c
index f7346f8..64325d6 100644
--- a/src/tools/analysis-exp-smoothing.c
+++ b/src/tools/analysis-exp-smoothing.c
@@ -94,15 +94,15 @@ analysis_tool_exponential_smoothing_engine_ses_h_run (data_analysis_output_t *da
 	GnmExpr const *expr_alpha = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup ("SUMXMY2", NULL);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph)
@@ -268,16 +268,16 @@ analysis_tool_exponential_smoothing_engine_ses_r_run (data_analysis_output_t *da
 	GnmExpr const *expr_alpha = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup ("SUMXMY2", NULL);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
-	fd_average = gnm_func_lookup ("AVERAGE", NULL);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_average);				
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph)
@@ -449,17 +449,17 @@ analysis_tool_exponential_smoothing_engine_des_run (data_analysis_output_t *dao,
 	GnmExpr const *expr_gamma = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup ("SUMXMY2", NULL);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 		
-	fd_linest = gnm_func_lookup ("LINEST", NULL);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
 	gnm_func_ref (fd_linest);				
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph)
@@ -683,23 +683,23 @@ analysis_tool_exponential_smoothing_engine_ates_run (data_analysis_output_t *dao
 	GnmExpr const *expr_delta = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup ("SUMXMY2", NULL);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 		
-	fd_linest = gnm_func_lookup ("LINEST", NULL);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
 	gnm_func_ref (fd_linest);				
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_average = gnm_func_lookup ("AVERAGE", NULL);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_mod = gnm_func_lookup ("mod", NULL);
+	fd_mod = gnm_func_lookup_or_add_placeholder ("mod", NULL, FALSE);
 	gnm_func_ref (fd_mod);
-	fd_row = gnm_func_lookup ("row", NULL);
+	fd_row = gnm_func_lookup_or_add_placeholder ("row", NULL, FALSE);
 	gnm_func_ref (fd_row);
 
 	if (info->show_graph)
@@ -1000,25 +1000,25 @@ analysis_tool_exponential_smoothing_engine_mtes_run (data_analysis_output_t *dao
 	GnmExpr const *expr_delta = NULL;
 
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumsq = gnm_func_lookup ("SUMSQ", NULL);
+		fd_sumsq = gnm_func_lookup_or_add_placeholder ("SUMSQ", NULL, FALSE);
 		gnm_func_ref (fd_sumsq);		
 	}
 		
-	fd_linest = gnm_func_lookup ("LINEST", NULL);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
 	gnm_func_ref (fd_linest);				
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);		
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
-	fd_average = gnm_func_lookup ("AVERAGE", NULL);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_average);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_mod = gnm_func_lookup ("mod", NULL);
+	fd_mod = gnm_func_lookup_or_add_placeholder ("mod", NULL, FALSE);
 	gnm_func_ref (fd_mod);
-	fd_row = gnm_func_lookup ("row", NULL);
+	fd_row = gnm_func_lookup_or_add_placeholder ("row", NULL, FALSE);
 	gnm_func_ref (fd_row);
 
 	if (info->show_graph)
diff --git a/src/tools/analysis-frequency.c b/src/tools/analysis-frequency.c
index 78b2b94..4a76c61 100644
--- a/src/tools/analysis-frequency.c
+++ b/src/tools/analysis-frequency.c
@@ -51,23 +51,23 @@ analysis_tool_frequency_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_columns = NULL;
 	GnmFunc *fd_exact = NULL;
 
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_isblank = gnm_func_lookup ("ISBLANK", NULL);
+	fd_isblank = gnm_func_lookup_or_add_placeholder ("ISBLANK", NULL, FALSE);
 	gnm_func_ref (fd_isblank);
 	
 	if (info->exact) {
-		fd_exact = gnm_func_lookup ("EXACT", NULL);
+		fd_exact = gnm_func_lookup_or_add_placeholder ("EXACT", NULL, FALSE);
 		gnm_func_ref (fd_exact);
 	}
 	if (info->percentage) {
-		fd_rows = gnm_func_lookup ("ROWS", NULL);
+		fd_rows = gnm_func_lookup_or_add_placeholder ("ROWS", NULL, FALSE);
 		gnm_func_ref (fd_rows);
-		fd_columns = gnm_func_lookup ("COLUMNS", NULL);
+		fd_columns = gnm_func_lookup_or_add_placeholder ("COLUMNS", NULL, FALSE);
 		gnm_func_ref (fd_columns);
 	}
 	/* General Info */
diff --git a/src/tools/analysis-histogram.c b/src/tools/analysis-histogram.c
index a6999d3..e1e247a 100644
--- a/src/tools/analysis-histogram.c
+++ b/src/tools/analysis-histogram.c
@@ -47,9 +47,9 @@ make_hist_expr (analysis_tools_data_histogram_t *info,
 	GnmExpr const *expr_data;
 	GnmExpr const *expr_if_to, *expr_if_from;
 	GnmExprOp from, to;
-	GnmFunc *fd_if = gnm_func_lookup ("IF", NULL);
-	GnmFunc *fd_sum = gnm_func_lookup ("SUM", NULL);
-	GnmFunc *fd_count = gnm_func_lookup ("COUNT", NULL);
+	GnmFunc *fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
+	GnmFunc *fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
+	GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gint to_col = (info->cumulative) ? 0 : 1;
 
 	if (info->bin_type & bintype_no_inf_lower) {
@@ -121,11 +121,11 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 
 	char const *format;
 
-	fd_small = gnm_func_lookup ("SMALL", NULL);
+	fd_small = gnm_func_lookup_or_add_placeholder ("SMALL", NULL, FALSE);
 	gnm_func_ref (fd_small);
 
 	if (info->base.labels) {
-		fd_index = gnm_func_lookup ("INDEX", NULL);
+		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 		gnm_func_ref (fd_index);		
 	}
 	
@@ -189,7 +189,7 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 		else {
 			GnmFunc *fd_min;
 		
-			fd_min = gnm_func_lookup ("MIN", NULL);
+			fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
 			gnm_func_ref (fd_min);
 			dao_set_cell_expr (dao, to_col, i_start,
 					   gnm_expr_new_funcall1 
@@ -203,7 +203,7 @@ analysis_tool_histogram_engine_run (data_analysis_output_t *dao,
 		else {
 			GnmFunc *fd_max;
 		
-			fd_max = gnm_func_lookup ("MAX", NULL);
+			fd_max = gnm_func_lookup_or_add_placeholder ("MAX", NULL, FALSE);
 			gnm_func_ref (fd_max);
 			dao_set_cell_expr (dao, to_col, i_start + i_limit - 1,
 					   gnm_expr_new_funcall1 
diff --git a/src/tools/analysis-kaplan-meier.c b/src/tools/analysis-kaplan-meier.c
index b060594..741b1b1 100644
--- a/src/tools/analysis-kaplan-meier.c
+++ b/src/tools/analysis-kaplan-meier.c
@@ -76,21 +76,21 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
 
 	GSList *gl = info->group_list;
 
-	fd_small = gnm_func_lookup ("SMALL", NULL);
+	fd_small = gnm_func_lookup_or_add_placeholder ("SMALL", NULL, FALSE);
 	gnm_func_ref (fd_small);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_iserror = gnm_func_lookup ("ISERROR", NULL);
+	fd_iserror = gnm_func_lookup_or_add_placeholder ("ISERROR", NULL, FALSE);
 	gnm_func_ref (fd_iserror);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
 	
 	if (info->std_err) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);
 	}
 	if (info->median) {
-		fd_min = gnm_func_lookup ("MIN", NULL);
+		fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
 		gnm_func_ref (fd_min);
 	}
 
@@ -523,7 +523,7 @@ analysis_tool_kaplan_meier_engine_run (data_analysis_output_t *dao,
 		GnmExpr const *expr_n_total = gnm_expr_new_constant (value_new_int (0));
 		GnmExpr const *expr_death_total = gnm_expr_new_constant (value_new_int (0));
 
-		fd_chidist = gnm_func_lookup ("CHIDIST", NULL);
+		fd_chidist = gnm_func_lookup_or_add_placeholder ("CHIDIST", NULL, FALSE);
 		gnm_func_ref (fd_chidist);
 
 		dao_set_italic (dao, 1, logrank_test_y_offset, 1, logrank_test_y_offset+3);
diff --git a/src/tools/analysis-tools.c b/src/tools/analysis-tools.c
index 21f431e..bf59d54 100644
--- a/src/tools/analysis-tools.c
+++ b/src/tools/analysis-tools.c
@@ -552,7 +552,7 @@ analysis_tool_table (data_analysis_output_t *dao,
 	dao_set_cell_printf (dao, 0, 0, "%s", title);
 	dao_set_italic (dao, 0, 0, 0, 0);
 
-	fd = gnm_func_lookup (functionname, NULL);
+	fd = gnm_func_lookup_or_add_placeholder (functionname, NULL, FALSE);
 	gnm_func_ref (fd);
 
 	for (col = 1, inputdata = info->input; inputdata != NULL;
@@ -742,29 +742,29 @@ summary_statistics (data_analysis_output_t *dao,
 	GnmFunc *fd_count;
 	GnmFunc *fd_sqrt;
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_median = gnm_func_lookup (info->use_ssmedian ? "SSMEDIAN" : "MEDIAN", NULL);
+	fd_median = gnm_func_lookup_or_add_placeholder (info->use_ssmedian ? "SSMEDIAN" : "MEDIAN", NULL, FALSE);
 	gnm_func_ref (fd_median);
-	fd_mode = gnm_func_lookup ("MODE", NULL);
+	fd_mode = gnm_func_lookup_or_add_placeholder ("MODE", NULL, FALSE);
 	gnm_func_ref (fd_mode);
-	fd_stdev = gnm_func_lookup ("STDEV", NULL);
+	fd_stdev = gnm_func_lookup_or_add_placeholder ("STDEV", NULL, FALSE);
 	gnm_func_ref (fd_stdev);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_kurt = gnm_func_lookup ("KURT", NULL);
+	fd_kurt = gnm_func_lookup_or_add_placeholder ("KURT", NULL, FALSE);
 	gnm_func_ref (fd_kurt);
-	fd_skew = gnm_func_lookup ("SKEW", NULL);
+	fd_skew = gnm_func_lookup_or_add_placeholder ("SKEW", NULL, FALSE);
 	gnm_func_ref (fd_skew);
-	fd_min = gnm_func_lookup ("MIN", NULL);
+	fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);
 	gnm_func_ref (fd_min);
-	fd_max = gnm_func_lookup ("MAX", NULL);
+	fd_max = gnm_func_lookup_or_add_placeholder ("MAX", NULL, FALSE);
 	gnm_func_ref (fd_max);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
 
         dao_set_cell (dao, 0, 0, NULL);
@@ -920,15 +920,15 @@ confidence_level (data_analysis_output_t *dao,
 
         dao_set_cell (dao, 0, 0, NULL);
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_tinv = gnm_func_lookup ("TINV", NULL);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
 	gnm_func_ref (fd_tinv);
-	fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
 
 
@@ -995,7 +995,7 @@ kth_smallest_largest (data_analysis_output_t *dao,
 {
         guint col;
 	GSList *data = info->base.input;
-	GnmFunc *fd = gnm_func_lookup (func, NULL);
+	GnmFunc *fd = gnm_func_lookup_or_add_placeholder (func, NULL, FALSE);
 	gnm_func_ref (fd);
 
         dao_set_cell_printf (dao, 0, 1, label, k);
@@ -1116,11 +1116,11 @@ analysis_tool_sampling_engine_run (data_analysis_output_t *dao,
 	gint source;
 
 	if (info->base.labels || info->periodic) {
-		fd_index = gnm_func_lookup ("INDEX", NULL);
+		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 		gnm_func_ref (fd_index);		
 	}
 	if (!info->periodic) {
-		fd_randdiscrete = gnm_func_lookup ("RANDDISCRETE", NULL);
+		fd_randdiscrete = gnm_func_lookup_or_add_placeholder ("RANDDISCRETE", NULL, FALSE);
 		gnm_func_ref (fd_randdiscrete);				
 	}
 
@@ -1343,17 +1343,17 @@ analysis_tool_ztest_engine_run (data_analysis_output_t *dao,
 					"/P (Z<=z) two-tail"
 					"/z Critical two-tail"));
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_normsdist = gnm_func_lookup ("NORMSDIST", NULL);
+	fd_normsdist = gnm_func_lookup_or_add_placeholder ("NORMSDIST", NULL, FALSE);
 	gnm_func_ref (fd_normsdist);
-	fd_abs = gnm_func_lookup ("ABS", NULL);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_normsinv = gnm_func_lookup ("NORMSINV", NULL);
+	fd_normsinv = gnm_func_lookup_or_add_placeholder ("NORMSINV", NULL, FALSE);
 	gnm_func_ref (fd_normsinv);
 
 	val_1 = value_dup (info->base.range_1);
@@ -1597,27 +1597,27 @@ analysis_tool_ttest_paired_engine_run (data_analysis_output_t *dao,
 					"/P (T<=t) two-tail"
 					"/t Critical two-tail"));
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_correl = gnm_func_lookup ("CORREL", NULL);
+	fd_correl = gnm_func_lookup_or_add_placeholder ("CORREL", NULL, FALSE);
 	gnm_func_ref (fd_correl);
-	fd_tinv = gnm_func_lookup ("TINV", NULL);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
 	gnm_func_ref (fd_tinv);
-	fd_tdist = gnm_func_lookup ("TDIST", NULL);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_abs = gnm_func_lookup ("ABS", NULL);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_isodd = gnm_func_lookup ("ISODD", NULL);
+	fd_isodd = gnm_func_lookup_or_add_placeholder ("ISODD", NULL, FALSE);
 	gnm_func_ref (fd_isodd);
-	fd_isnumber = gnm_func_lookup ("ISNUMBER", NULL);
+	fd_isnumber = gnm_func_lookup_or_add_placeholder ("ISNUMBER", NULL, FALSE);
 	gnm_func_ref (fd_isnumber);
-	fd_if = gnm_func_lookup ("IF", NULL);
+	fd_if = gnm_func_lookup_or_add_placeholder ("IF", NULL, FALSE);
 	gnm_func_ref (fd_if);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
 
 	val_1 = value_dup (info->base.range_1);
@@ -1879,17 +1879,17 @@ analysis_tool_ttest_eqvar_engine_run (data_analysis_output_t *dao,
 	val_1 = value_dup (info->base.range_1);
 	val_2 = value_dup (info->base.range_2);
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_tdist = gnm_func_lookup ("TDIST", NULL);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_abs = gnm_func_lookup ("ABS", NULL);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_tinv = gnm_func_lookup ("TINV", NULL);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
 	gnm_func_ref (fd_tinv);
 
 	/* Labels */
@@ -2175,17 +2175,17 @@ analysis_tool_ttest_neqvar_engine_run (data_analysis_output_t *dao,
 	val_1 = value_dup (info->base.range_1);
 	val_2 = value_dup (info->base.range_2);
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_tdist = gnm_func_lookup ("TDIST", NULL);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_abs = gnm_func_lookup ("ABS", NULL);
+	fd_abs = gnm_func_lookup_or_add_placeholder ("ABS", NULL, FALSE);
 	gnm_func_ref (fd_abs);
-	fd_tinv = gnm_func_lookup ("TINV", NULL);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
 	gnm_func_ref (fd_tinv);
 
 	/* Labels */
@@ -2452,7 +2452,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	GnmFunc *fd_finv;
 
-	fd_finv = gnm_func_lookup ("FINV", NULL);
+	fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
 	gnm_func_ref (fd_finv);
 
 	dao_set_cell (dao, 0, 0, _("F-Test"));
@@ -2477,7 +2477,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* Mean */
 	{
-		GnmFunc *fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+		GnmFunc *fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 		gnm_func_ref (fd_mean);
 
 		dao_set_cell_expr
@@ -2497,7 +2497,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* Variance */
 	{
-		GnmFunc *fd_var = gnm_func_lookup ("VAR", NULL);
+		GnmFunc *fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 		gnm_func_ref (fd_var);
 
 		dao_set_cell_expr
@@ -2516,7 +2516,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
         /* Count */
 	{
-		GnmFunc *fd_count = gnm_func_lookup ("COUNT", NULL);
+		GnmFunc *fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 		gnm_func_ref (fd_count);
 
 		dao_set_cell_expr
@@ -2560,7 +2560,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* P right-tail */
 	{
-		GnmFunc *fd_fdist = gnm_func_lookup ("FDIST", NULL);
+		GnmFunc *fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
 		const GnmExpr *arg3;
 
 		gnm_func_ref (fd_fdist);
@@ -2635,7 +2635,7 @@ analysis_tool_ftest_engine_run (data_analysis_output_t *dao,
 
 	/* P two-tail */
 	{
-		GnmFunc *fd_min = gnm_func_lookup ("MIN", NULL);;
+		GnmFunc *fd_min = gnm_func_lookup_or_add_placeholder ("MIN", NULL, FALSE);;
 
 		gnm_func_ref (fd_min);
 
@@ -2807,28 +2807,28 @@ analysis_tool_regression_engine_run (data_analysis_output_t *dao,
 	char const *label = ((info->group_by == GROUPED_BY_ROW) ? _("Row") 
 			     : _("Column"));
 
-	fd_linest = gnm_func_lookup ("LINEST", NULL);
+	fd_linest = gnm_func_lookup_or_add_placeholder ("LINEST", NULL, FALSE);
 	gnm_func_ref (fd_linest);
-	fd_index = gnm_func_lookup ("INDEX", NULL);
+	fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 	gnm_func_ref (fd_index);
-	fd_fdist = gnm_func_lookup ("FDIST", NULL);
+	fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
 	gnm_func_ref (fd_fdist);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+	fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 	gnm_func_ref (fd_sqrt);
-	fd_tdist = gnm_func_lookup ("TDIST", NULL);
+	fd_tdist = gnm_func_lookup_or_add_placeholder ("TDIST", NULL, FALSE);
 	gnm_func_ref (fd_tdist);
-	fd_tinv = gnm_func_lookup ("TINV", NULL);
+	fd_tinv = gnm_func_lookup_or_add_placeholder ("TINV", NULL, FALSE);
 	gnm_func_ref (fd_tinv);
-	fd_transpose = gnm_func_lookup ("TRANSPOSE", NULL);
+	fd_transpose = gnm_func_lookup_or_add_placeholder ("TRANSPOSE", NULL, FALSE);
 	gnm_func_ref (fd_transpose);
 	if (!info->base.labels) {
-		fd_concatenate = gnm_func_lookup ("CONCATENATE", NULL);
+		fd_concatenate = gnm_func_lookup_or_add_placeholder ("CONCATENATE", NULL, FALSE);
 		gnm_func_ref (fd_concatenate);
-		fd_cell = gnm_func_lookup ("CELL", NULL);
+		fd_cell = gnm_func_lookup_or_add_placeholder ("CELL", NULL, FALSE);
 		gnm_func_ref (fd_cell);
-		fd_offset = gnm_func_lookup ("OFFSET", NULL);
+		fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 		gnm_func_ref (fd_offset);
 	}
 
@@ -3334,22 +3334,22 @@ analysis_tool_moving_average_engine_run (data_analysis_output_t *dao,
 	GogPlot	     *plot = NULL;
 
 	if (info->base.labels) {
-		fd_index = gnm_func_lookup ("INDEX", NULL);
+		fd_index = gnm_func_lookup_or_add_placeholder ("INDEX", NULL, FALSE);
 		gnm_func_ref (fd_index);		
 	}
 	if (info->std_error_flag) {
-		fd_sqrt = gnm_func_lookup ("SQRT", NULL);
+		fd_sqrt = gnm_func_lookup_or_add_placeholder ("SQRT", NULL, FALSE);
 		gnm_func_ref (fd_sqrt);		
-		fd_sumxmy2 = gnm_func_lookup ("SUMXMY2", NULL);
+		fd_sumxmy2 = gnm_func_lookup_or_add_placeholder ("SUMXMY2", NULL, FALSE);
 		gnm_func_ref (fd_sumxmy2);		
 	}
 	if (moving_average_type_wma == info->ma_type || moving_average_type_spencer_ma == info->ma_type) {
-		fd_sum = gnm_func_lookup ("SUM", NULL);
+		fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 		gnm_func_ref (fd_sum);		
 	}
-	fd_average = gnm_func_lookup ("AVERAGE", NULL);
+	fd_average = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_average);	
-	fd_offset = gnm_func_lookup ("OFFSET", NULL);
+	fd_offset = gnm_func_lookup_or_add_placeholder ("OFFSET", NULL, FALSE);
 	gnm_func_ref (fd_offset);
 
 	if (info->show_graph) {
@@ -3679,15 +3679,15 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_match;
 	GnmFunc *fd_percentrank;
 
-	fd_large = gnm_func_lookup ("LARGE", NULL);
+	fd_large = gnm_func_lookup_or_add_placeholder ("LARGE", NULL, FALSE);
 	gnm_func_ref (fd_large);
-	fd_row = gnm_func_lookup ("ROW", NULL);
+	fd_row = gnm_func_lookup_or_add_placeholder ("ROW", NULL, FALSE);
 	gnm_func_ref (fd_row);
-	fd_rank = gnm_func_lookup ("RANK", NULL);
+	fd_rank = gnm_func_lookup_or_add_placeholder ("RANK", NULL, FALSE);
 	gnm_func_ref (fd_rank);
-	fd_match = gnm_func_lookup ("MATCH", NULL);
+	fd_match = gnm_func_lookup_or_add_placeholder ("MATCH", NULL, FALSE);
 	gnm_func_ref (fd_match);
-	fd_percentrank = gnm_func_lookup ("PERCENTRANK", NULL);
+	fd_percentrank = gnm_func_lookup_or_add_placeholder ("PERCENTRANK", NULL, FALSE);
 	gnm_func_ref (fd_percentrank);
 
 	dao_set_merge (dao, 0, 0, 1, 0);
@@ -3736,7 +3736,7 @@ analysis_tool_ranking_engine_run (data_analysis_output_t *dao,
 			GnmExpr const *expr_rows_p_one;
 			GnmExpr const *expr_rows;
 			GnmFunc *fd_count;
-			fd_count = gnm_func_lookup ("COUNT", NULL);
+			fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 			gnm_func_ref (fd_count);
 			
 			expr_rows = gnm_expr_new_funcall1 
@@ -3853,15 +3853,15 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
 					"/Variance"));
 	dao_set_italic (dao, 0, 3, 4, 3);
 
-	fd_mean = gnm_func_lookup ("AVERAGE", NULL);
+	fd_mean = gnm_func_lookup_or_add_placeholder ("AVERAGE", NULL, FALSE);
 	gnm_func_ref (fd_mean);
-	fd_var = gnm_func_lookup ("VAR", NULL);
+	fd_var = gnm_func_lookup_or_add_placeholder ("VAR", NULL, FALSE);
 	gnm_func_ref (fd_var);
-	fd_sum = gnm_func_lookup ("SUM", NULL);
+	fd_sum = gnm_func_lookup_or_add_placeholder ("SUM", NULL, FALSE);
 	gnm_func_ref (fd_sum);
-	fd_count = gnm_func_lookup ("COUNT", NULL);
+	fd_count = gnm_func_lookup_or_add_placeholder ("COUNT", NULL, FALSE);
 	gnm_func_ref (fd_count);
-	fd_devsq = gnm_func_lookup ("DEVSQ", NULL);
+	fd_devsq = gnm_func_lookup_or_add_placeholder ("DEVSQ", NULL, FALSE);
 	gnm_func_ref (fd_devsq);
 
 	dao->offset_row += 4;
@@ -4069,7 +4069,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
 				arg3 = gnm_expr_copy (expr_wdof);
 			}
 
-			fd_fdist = gnm_func_lookup ("FDIST", NULL);
+			fd_fdist = gnm_func_lookup_or_add_placeholder ("FDIST", NULL, FALSE);
 			gnm_func_ref (fd_fdist);
 
 			dao_set_cell_expr
@@ -4091,7 +4091,7 @@ analysis_tool_anova_single_engine_run (data_analysis_output_t *dao, gpointer spe
 			} else
 				arg3 = expr_wdof;
 
-			fd_finv = gnm_func_lookup ("FINV", NULL);
+			fd_finv = gnm_func_lookup_or_add_placeholder ("FINV", NULL, FALSE);
 			gnm_func_ref (fd_finv);
 
 			dao_set_cell_expr
@@ -4174,11 +4174,11 @@ analysis_tool_fourier_engine_run (data_analysis_output_t *dao,
 	GnmFunc *fd_imaginary;
 	GnmFunc *fd_imreal;
 
-	fd_fourier = gnm_func_lookup ("FOURIER", NULL);
+	fd_fourier = gnm_func_lookup_or_add_placeholder ("FOURIER", NULL, FALSE);
 	gnm_func_ref (fd_fourier);
-	fd_imaginary = gnm_func_lookup ("IMAGINARY", NULL);
+	fd_imaginary = gnm_func_lookup_or_add_placeholder ("IMAGINARY", NULL, FALSE);
 	gnm_func_ref (fd_imaginary);
-	fd_imreal = gnm_func_lookup ("IMREAL", NULL);
+	fd_imreal = gnm_func_lookup_or_add_placeholder ("IMREAL", NULL, FALSE);
 	gnm_func_ref (fd_imreal);
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]