diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 560f5f5dc7995b1f740da1fb1778d7fa662c46d5..d48e809966cb4e12602713aafc5b7c5b3e2a817b 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -906,9 +906,9 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
   if (join.group || join.tmp_table_param.sum_func_count ||
       (procedure && (procedure->flags & PROC_GROUP)))
   {
-    alloc_group_fields(&join,group);
-    setup_copy_fields(thd, &join.tmp_table_param,all_fields);
-    if (make_sum_func_list(&join,all_fields) || thd->fatal_error)
+    if (alloc_group_fields(&join,group) ||
+        setup_copy_fields(thd, &join.tmp_table_param,all_fields) ||
+        make_sum_func_list(&join,all_fields) || thd->fatal_error)
       goto err; /* purecov: inspected */
   }
   if (group || order)