Bug in objects+XML

From: Date: Tue, 24 Apr 2001 16:00:47 +0000
Subject: Bug in objects+XML
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-52284@lists.php.net to get a copy of this message
Hi! Maybe, I'm not so correct, or something else, but..... Try to run the script (php 4.0.6-dev). Compiled with: ./configure --with-sablot --with-dom --with-gettext --with-jpeg-dir=/usr --with-pops --with-xml=/usr/local --with-gdbm=/usr/local --enable-gd-native-ttf --with-gd --with-freetype-dir --with-mysql=/usr/local/mysql --with-png-dir=/usr/local --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no gcc, linux, glibc2*, latest sablot, expat, etc. ----------------------- Script -------------------- <? $Bad=0; // try to set it to 1 for segfault $taggz[0]="table_here"; $taggz[1]="mydir"; $functinz['table_here']="my_func"; $functinz['mydir']="my_func"; error_reporting(E_ALL); Function my_func($atr){ echo("Variable:-----"); var_dump($atr); } class my_xml { var $functinz; var $tagz; var $parser; var $parzed; function tag_open($parser,$tag,$attribz) { echo("+++++tagopen\n"); $atr=$attribz; if(in_array($tag,$this->tagz)) { echo("Bad girlz\n"); // var_dump($atr); echo("KKKKKKKK\n"); $this->parzed.="Qtes"; //call_user_func($this->functinz[$tag],$atr); } else { $this->parzed.="<$tag"; if (isset($atr)) { echo("Bag giez\n"); // var_dump($atr); if(is_array($atr)) { echo("AAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n"); while (list($k, $v) = each($atr)) { $this->parzed.=" $k=\"$v\""; } } } // is set $this->parzed.=">"; } // else echo("End\n"); } function my_xml(&$tags, &$func_array) { global $Bad; $this->parzed=""; $this->parser = xml_parser_create(); if($Bad) xml_set_object($this->parser,&$this); xml_set_element_handler($this->parser,"tag_open","tag_close"); xml_set_character_data_handler($this->parser,"cdata"); xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false); $this->functinz=&$func_array; $this->tagz=&$tags; } function cdata($parser,$cdata) { echo("+++++d\n"); $this->parzed.=$cdata; } function tag_close($parser,$tag) { echo("+++++tagclose\n"); if(in_array($tag,$this->tagz)) { } else { $this->parzed.="</$tag>"; } } function parze($data) { xml_parse($this->parser,$data); return $this->parzed; } } $a=new my_xml($taggz,$functinz); if(!$Bad) xml_set_object($a->parser,&$a); $e=$a->parze(" <doka> <a href=\"http://www.kiae.su\">Buka <table_here ID=\"958955897\">fgkljgkljgkljg</table_here> </a> <table_here ID=\"3\">fkfjhjkhkjhkjfhff</table_here> \n"); xml_parser_free($a->parser); echo($e); echo("HHHHHHHHHHHHHHHHHHHHHHHHH\n"); ?>

« previous php.dev (#52284) next »