Edit report at https://bugs.php.net/bug.php?id=65708&edit=1
ID: 65708 Updated by: ahar...@php.net Reported by: gary_whittles at hotmail dot com Summary: dba functions cast $key param to string in-place, bypassing copy on write -Status: Open +Status: Closed Type: Bug Package: DBM/DBA related Operating System: Fedora 17 PHP Version: 5.5Git-2013-09-19 (Git) -Assigned To: +Assigned To: aharvey Block user comment: N Private report: N New Comment: The fix for this bug has been committed. Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. For Windows: http://windows.php.net/snapshots/ Thank you for the report, and for helping us make PHP better. Commit: https://github.com/php/php-src/commit/30e0442c549bd20288ca8754daa0cdf24d98f055 Previous Comments: ------------------------------------------------------------------------ [2013-09-19 10:23:55] gary_whittles at hotmail dot com Description: ------------ Calling dba functions (e.g. dba_exists/dba_insert) with a non-string key causes the key to be cast to a string. This also affects any variables that are copies of the key variable. This seems to be independent of database type - tested with db4 and flatfile databases. Test script: --------------- <?php $db = dba_open('/tmp/testdb', 'c', 'flatfile'); $i = 1; //use integer key $j = $i; //copy by value echo gettype($i)."\n"; echo gettype($j)."\n"; dba_exists($i, $db); echo gettype($i)."\n"; echo gettype($j)."\n"; Expected result: ---------------- integer integer integer integer Actual result: -------------- integer integer string string ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=65708&edit=1