Re: funky issue

From: Date: Wed, 30 Aug 2006 14:37:43 +0000
Subject: Re: funky issue
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-43837@lists.php.net to get a copy of this message
Lukas Kahwe Smith wrote: > Hi, > > I am noticing a funky issue in MDB2_Schema. > Specifically in the interaction between the parser [1] and the validator > [2]. > > The parser generates some data structures, passes them on to the > validator inside method calls. However the odd thing is that the process > dies if I dont pass by reference variables that are just checked via > isset(). > > here is some code from the parser: > case 'database-table': > $result = > $this->val->validateTable($this->database_definition['tables'], > $this->table, $this->table_name); > if (PEAR::isError($result)) { > $this->raiseError($result->getUserinfo(), 0, $xp, > $result->getCode()); > } else { > $this->database_definition['tables'][$this->table_name] > = $this->table; > } > > and here the corresponding method in validate: > function validateTable(&$tables, &$table, $table_name) > { > .. > > /* Table name duplicated? */ > if (isset($tables[$table_name])) { > return $this->raiseError(MDB2_SCHEMA_ERROR_VALIDATE, > 'table "'.$table_name.'" already exists'); > } > > .. > } > > $tables is not modified anywhere and this is the only place its actually > being used inside the method. $table is however modified and therefore > needs to be passed by reference. > > switching the signature to > function validateTable($tables, &$table, $table_name > > or even > > function validateTable(&$table, $tables, $table_name > > causes the operation to fail .. in 5.2.0 it seems to even cause a fatal > error .. but i need to get this some more. > > regards, > Lukas > > [1] > > http://cvs.php.net/viewvc.cgi/pear/MDB2_Schema/MDB2/Schema/Parser.php?view=markup > > [2] > > http://cvs.php.net/viewvc.cgi/pear/MDB2_Schema/MDB2/Schema/Validate.php?view=markup > yep, sounds like a bug... you can always use array_key_exists() instead. -Philippe

« previous php.pear.dev (#43837) next »