Thanks Tadej! Interesting. Still looking for more examples. Cheers, -- Sammy Spets Synerger Pty Ltd http://www.synerger.com/ On 27-Apr-06 08:52, Tadej Ba??a wrote:
On XAMPP - Apache + PHP 5.1 only this error occurs when I uncomment the faulty line...
Fatal error: Cannot create references to/from string offsets nor overloaded objects in D:\htdocs\drupal7\includes\form.inc on line 341
cheers, tadej
Sammy Spets pravi:
Hi everyone,
I've just run into a segfault situation during development of a form element. Basically, all I changed from a working system was add a new form element and accidentally left something off one of the child element definitions. Here is a code snippet you can drop into a module and see if you can reproduce it.
PHP Version: 4.3.10-16 System: Debian Sarge Kernel: 2.6.8-3-k7
function maillist_elements() { $type['listadmin'] = array('#input' => TRUE, '#process' => array('expand_listadmin' => array())); return $type; }
function expand_listadmin($element) { $options = array('blah' => 'blah'); $element['list'] = array('#type' => 'select', '#options' => $options, '#value' => $element['#value']['list']); // $element['or'] = array('#type' => 'markup', '<span style="padding: 0 20px; text-weight: bold;">OR</span>'); $element['or'] = array('#type' => 'markup', '#value' => '<span style="padding: 0 20px; text-weight: bold;">OR</span>'); $element['text'] = array('#type' => 'textfield', '#size' => 50, '#maxlength' => 256, '#value' => $element['#value']['text']); $element['#tree'] = TRUE; return $element; }
function theme_listadmin($element) { $output = '<div class="container-inline">' . $element['#children'] . '</div>'; return theme('form_element', $element['#title'], $output, $element['#description'], $element['#id'], $element['#required'], form_get_error($element)); }
The commented out line is the one that is causing the segfault. The line below is the working line.
It could be the forms API code ends up in an infinite loop over this little fella and, if so, i'm happy to fix it. Just need someone to reconfirm this happens (especially in another version of PHP).
Cheers,