>>I'm using add_index_string and add_assoc_string to build an array, and these >>functions expect a 'duplicate' argument. When should I set this to 1 and >>when to 0? >First of all, it definitely matters. Sending the right value is extremely >important. If you send 1 instead of 0, then you would get a memory >leak. If you send a 0 instead of 1, you'll most likely crash. So you >really must send the right values each time :) > [...] So what you're saying is - if duplicate is set to 0, you create a reference - if duplicate is set to 1, you increase the reference counter so that 'duplicate' means 'I am a duplicate', instead of what I first thought 'duplicate me' (which is why I sent a 1 first (duplicate me), and a 0 second). OK, that's clear now. Another question that's related to this: Am I right when I say: when I have created and initialized a zval in a function (MAKE_STD_ZVAL) I should also free it in this function (FREE_ZVAL), except when I add it directly to the hashtable (zend_hash_index_update), because then it is freed automatically? The following code-snippet from a function (dbx_query) actually works and doesn't crash or leak, based on this assumption // fill each row array with fieldvalues (indexed and assoc) row_count=0; result=1; while (result) { zval * rv_row; MAKE_STD_ZVAL(rv_row); result = switch_dbx_getrow(&rv_row, &rv_result_handle, DBX_RESULT_INDEX | DBX_RESULT_ASSOC, INTERNAL_FUNCTION_PARAM_PASSTHRU, dbx_module); if (result) { zend_hash_index_update(data->value.ht, row_count, (void *)&(rv_row), sizeof(zval *), NULL); ++row_count; } else { FREE_ZVAL(rv_row); } } And yes, as you have guessed, I've started on creating a database abstraction module :-) It is called 'dbx' and currently already works for mysql... Since I want this Open Source'd (and preferably in the php-cvs-tree as well), how would I go about doing that (this will be my first open source code)? Thanks, Marc. -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]