php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #6671 using the XML parser in a class does not seem to work any longer
Submitted: 2000-09-12 02:05 UTC Modified: 2002-06-18 18:13 UTC
From: d dot roche at lectra dot com Assigned:
Status: Closed Package: XML related
PHP Version: 4.0.2 OS: Linux RedHat 6.2
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: d dot roche at lectra dot com
New email:
PHP Version: OS:

 

 [2000-09-12 02:05 UTC] d dot roche at lectra dot com
here is a little script which works with php4.0.1pl2
and crash ( Segmentation fault (11) ) with php4.0.2 !

both version where compiled with :
./configure  --disable-debug --with-apxs=/usr/sbin/apxs --with-regex=system --with-zlib --with-gd --with-db2 --with-gdbm --with-config-file-path=/etc/httpd --enable-trans-sid

the php.ini is the same for both.

========script : cut here================
<head>
<title>test xml problem</title>
</head>
<body>
<h1>test xml problem</h1>
<pre>
<script language="php">

class XmlParse {

  // variable members
  var $parser;

  //***********************************************************
  // constructor

  function XmlParse() {
    $this->parser = xml_parser_create();
    xml_set_object($this->parser,&$this);
    xml_set_element_handler($this->parser,"tag_open","tag_close");
    xml_set_character_data_handler($this->parser,"core_data");
  }
 
  //***********************************************************
  // handler (private) functions

  function tag_open($parser,$tag,$attributes) { 
    $this->debug1("tag_open",$tag.$this->viewarray($attributes));
  }
  
  function tag_close($parser,$tag) { 
    $this->debug1("tag_close",$tag);
  }

  function core_data($parser,$cdata) { 
    $this->debug1("core_data",$cdata);
  }
  
  //***********************************************************
  // parse (public) function

  function parse($data) { 

    if (!xml_parse($this->parser, $data, 1)) {
      $error = sprintf("XML error: %s at line %d",
		       xml_error_string(xml_get_error_code($this->parser)),
		       xml_get_current_line_number($this->parser));
      echo $error;
    }
    xml_parser_free($this->parser);
  }

  //***********************************************************
  // debug function

  function debug1($title,$msg) { 

    echo $title;
    echo " &laquo;";
    echo $msg;
    echo "&raquo; ";
    echo "\n";
  }

  function viewarray($arr) { 
    $str = "";
    if ( is_array($arr) ) {
      while ( list($key,$val) = each($arr) ) {
	$str .= " ".$key."=".$val;
      }
    }
    return $str;
  }

}
  

$xmldata = '<?xml version="1.0"?><tab><line><auteur>zimmer bradley</auteur><titre>la matrice fant?me</titre><serie>la romance de t?n?breuse</serie><type>ser20</type><moyenne>16</moyenne><genre>0x00000004</genre><key>0000658</key></line></tab>';

$xfx = new XmlParse();

$xfx->parse($xmldata);    

</script>
</pre>
</body>
==========cut here================

Some other tests i have made shows that XML parsing works well
with standard functions but does not work any longer with class methods.
I use xml_set_object($this->parser,&$this);

thank you for your attention !

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2000-10-30 09:43 UTC] stas@php.net
tim.diggins@teamworks.co.uk also reports this to happen in:

PHP 4.0.2 running as ISAPI under Win98/ed1/PWS
RH6.2 and apache [various versions] 
 [2001-05-07 16:11 UTC] cardinal@php.net
This looks like a dup of 6175.

 [2002-06-18 18:13 UTC] sniper@php.net
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at 
http://www.php.net/downloads.php


 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sun Jan 05 00:01:29 2025 UTC