>>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]

Reply via email to