subtle bug

mmcdougall - June 9, 2009 - 17:26
Project:Drupal For Firebug
Version:6.x-1.x-dev
Component:Code
Category:support request
Priority:normal
Assigned:Unassigned
Status:closed
Description

There's a subtle bug in your code (d5 and d6 versions):

/**
* Implementation of hook_exit()
*/
function drupalforfirebug_exit() {
  // Garbage Collection
  global $dfp_runtime;
  unset($dfp_runtime);
}

should be changed to:

/**
* Implementation of hook_exit()
*/
function drupalforfirebug_exit() {
  // Garbage Collection
  global $dfp_runtime;
  unset($_GLOBALS['dfp_runtime']);
}

Your code only unsets the local variable $dfp_runtime, so in your case it achieves nothing.
See the PHP documentation for the unset() function which says::

"The behavior of unset() inside of a function can vary depending on what type of variable you are attempting to destroy.
If a globalized variable is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called."

(Passing $dfp_runtime by reference does not work either).

However I think the unset() in this code is OK, since you are removing an array element:

/**
* Output Function to Return the Results of the Log
*/
function drupalforfirebug_get($panetype) {
  global $dfp_runtime;
  $output = '';
  if (isset($dfp_runtime['firebug_messages'][$panetype])) {
    foreach($dfp_runtime['firebug_messages'][$panetype] as $message) {
      $output .= '<div>'. $message .'</div>';
    }
    unset($dfp_runtime['firebug_messages'][$panetype]);
    return $output;
  }
}

Marc

#1

mmcdougall - June 9, 2009 - 17:28
Category:bug report» support request

Correction, should be changed to:

/**
* Implementation of hook_exit()
*/
function drupalforfirebug_exit() {
  // Garbage Collection
  unset($_GLOBALS['dfp_runtime']);
}

Marc

#2

populist - July 1, 2009 - 14:10
Status:active» fixed

Thanks! Just committed to CVS.

#3

System Message - July 15, 2009 - 14:20
Status:fixed» closed

Automatically closed -- issue fixed for 2 weeks with no activity.

 
 

Drupal is a registered trademark of Dries Buytaert.