From 2fac508af7b04ffb4fed0e96772bedece20d3881 Mon Sep 17 00:00:00 2001 From: Chris Burgess Date: Mon, 1 Sep 2014 13:39:15 +1200 Subject: [PATCH] Fix CRM-13113. Do not try to foreach() an empty array. --- CRM/Core/Error.php | 66 ++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/CRM/Core/Error.php b/CRM/Core/Error.php index 251633afd0..3afb385bce 100644 --- a/CRM/Core/Error.php +++ b/CRM/Core/Error.php @@ -614,40 +614,42 @@ class CRM_Core_Error extends PEAR_ErrorStack { $fnName = CRM_Utils_Array::value('function', $trace); $className = array_key_exists('class', $trace) ? ($trace['class'] . $trace['type']) : ''; - // do now show args for a few password related functions + // Do not show args for a few password related functions $skipArgs = ($className == 'DB::' && $fnName == 'connect') ? TRUE : FALSE; - foreach ($trace['args'] as $arg) { - if (! $showArgs || $skipArgs) { - $args[] = '(' . gettype($arg) . ')'; - continue; - } - switch ($type = gettype($arg)) { - case 'boolean': - $args[] = $arg ? 'TRUE' : 'FALSE'; - break; - case 'integer': - case 'double': - $args[] = $arg; - break; - case 'string': - $args[] = '"' . CRM_Utils_String::ellipsify(addcslashes((string) $arg, "\r\n\t\""), $maxArgLen). '"'; - break; - case 'array': - $args[] = '(Array:'.count($arg).')'; - break; - case 'object': - $args[] = 'Object(' . get_class($arg) . ')'; - break; - case 'resource': - $args[] = 'Resource'; - break; - case 'NULL': - $args[] = 'NULL'; - break; - default: - $args[] = "($type)"; - break; + if (!empty($trace['args'])) { + foreach ($trace['args'] as $arg) { + if (! $showArgs || $skipArgs) { + $args[] = '(' . gettype($arg) . ')'; + continue; + } + switch ($type = gettype($arg)) { + case 'boolean': + $args[] = $arg ? 'TRUE' : 'FALSE'; + break; + case 'integer': + case 'double': + $args[] = $arg; + break; + case 'string': + $args[] = '"' . CRM_Utils_String::ellipsify(addcslashes((string) $arg, "\r\n\t\""), $maxArgLen). '"'; + break; + case 'array': + $args[] = '(Array:'.count($arg).')'; + break; + case 'object': + $args[] = 'Object(' . get_class($arg) . ')'; + break; + case 'resource': + $args[] = 'Resource'; + break; + case 'NULL': + $args[] = 'NULL'; + break; + default: + $args[] = "($type)"; + break; + } } } -- 2.25.1