helly Wed Jul 28 18:55:26 2004 EDT Modified files: (Branch: PHP_5_0) /php-src/ext/spl spl_iterators.c /php-src/ext/spl/examples autoload.inc dbareader.inc Log: MFH http://cvs.php.net/diff.php/php-src/ext/spl/spl_iterators.c?r1=1.38&r2=1.38.2.1&ty=u Index: php-src/ext/spl/spl_iterators.c diff -u php-src/ext/spl/spl_iterators.c:1.38 php-src/ext/spl/spl_iterators.c:1.38.2.1 --- php-src/ext/spl/spl_iterators.c:1.38 Mon May 31 04:58:32 2004 +++ php-src/ext/spl/spl_iterators.c Wed Jul 28 18:55:26 2004 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_iterators.c,v 1.38 2004/05/31 08:58:32 zeev Exp $ */ +/* $Id: spl_iterators.c,v 1.38.2.1 2004/07/28 22:55:26 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -634,8 +634,16 @@ } } /* }}} */ +static INLINE void spl_dual_it_require(spl_dual_it_object *intern TSRMLS_DC) +{ + if (!intern->inner.iterator) { + php_error_docref(NULL TSRMLS_CC, E_ERROR, "The inner constructor wasn't initialized with an iterator instance"); + } +} + static INLINE void spl_dual_it_free(spl_dual_it_object *intern TSRMLS_DC) { + spl_dual_it_require(intern TSRMLS_CC); if (intern->inner.iterator && intern->inner.iterator->funcs->invalidate_current) { intern->inner.iterator->funcs->invalidate_current(intern->inner.iterator TSRMLS_CC); } @@ -698,6 +706,8 @@ { if (do_free) { spl_dual_it_free(intern TSRMLS_CC); + } else { + spl_dual_it_require(intern TSRMLS_CC); } intern->inner.iterator->funcs->move_forward(intern->inner.iterator TSRMLS_CC); intern->current.pos++; http://cvs.php.net/diff.php/php-src/ext/spl/examples/autoload.inc?r1=1.5&r2=1.5.2.1&ty=u Index: php-src/ext/spl/examples/autoload.inc diff -u php-src/ext/spl/examples/autoload.inc:1.5 php-src/ext/spl/examples/autoload.inc:1.5.2.1 --- php-src/ext/spl/examples/autoload.inc:1.5 Mon May 10 13:26:03 2004 +++ php-src/ext/spl/examples/autoload.inc Wed Jul 28 18:55:26 2004 @@ -33,7 +33,10 @@ */ function __autoload($classname) { $classname = strtolower($classname); - foreach(split(':', ini_get('include_path')) as $dir) + $inc = split(':', ini_get('include_path')); + $inc[] = '.'; + $inc[] = dirname($_SERVER['PATH_TRANSLATED']); + foreach($inc as $dir) { if (__load_class($classname, $dir)) { @@ -41,10 +44,7 @@ return; } } - if (!__load_class($classname, '.')) - if (!__load_class($classname, dirname($_SERVER['PATH_TRANSLATED']))) fprintf(STDERR, 'Class not found ('.$classname.")\n"); - return; } ?> http://cvs.php.net/diff.php/php-src/ext/spl/examples/dbareader.inc?r1=1.2&r2=1.2.2.1&ty=u Index: php-src/ext/spl/examples/dbareader.inc diff -u php-src/ext/spl/examples/dbareader.inc:1.2 php-src/ext/spl/examples/dbareader.inc:1.2.2.1 --- php-src/ext/spl/examples/dbareader.inc:1.2 Mon May 10 13:26:03 2004 +++ php-src/ext/spl/examples/dbareader.inc Wed Jul 28 18:55:26 2004 @@ -28,32 +28,24 @@ * @param handler Handler to use for database access. */ function __construct($file, $handler) { - $this->db = dba_open($file, 'r', $handler); + if (!$this->db = dba_open($file, 'r', $handler)) { + throw new exception('Could not open file ' . $file); + } } /** * Close database. */ function __destruct() { - if ($this->db) { - dba_close($this->db); - } + dba_close($this->db); } /** * Rewind to first element. */ function rewind() { - if ($this->db) { - $this->key = dba_firstkey($this->db); - } - } - - /** - * @return Current data. - */ - function current() { - return $this->val; + $this->key = dba_firstkey($this->db); + fetch_data(); } /** @@ -62,12 +54,24 @@ * @return void */ function next() { - if ($this->db) { - $this->key = dba_nextkey($this->db); - if ($this->key !== false) { - $this->val = dba_fetch($this->key, $this->db); - } + $this->key = dba_nextkey($this->db); + fetch_data(); + } + + /** + * Fetches the current data if $key is valid + */ + private function fetch_data() { + if ($this->key !== false) { + $this->val = dba_fetch($this->key, $this->db); } + } + + /** + * @return Current data. + */ + function current() { + return $this->val; } /**
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php