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
Comments
Comment #1
mmcdougall commentedCorrection, should be changed to:
Marc
Comment #2
populist commentedThanks! Just committed to CVS.
Comment #4
markhalliwellI'm surprised no one caught this. The actual $GLOBALS variable does not start with an underscore. Should be changed to:
Comment #5
deminymark.carver, you are absolutely right. I'm also surprised that this bug wasn't caught. Reference: http://php.net/manual/en/reserved.variables.globals.php
Comment #6
markhalliwellCan this be committed and set to fixed?
Comment #7
populist commentedThis has been fixed in the -dev version which will become a stable release soon.
Comment #8
markhalliwellThank you, I've been waiting for this to leave my queue.