On Wed, Feb 11, 2015 at 1:43 PM, Lester Caine <les...@lsces.co.uk> wrote:

> On 10/02/15 14:31, Lester Caine wrote:
> > in interbase/ibase_blobs.c
> >
> >>      zval *blob_arg, *string_arg;
> >>      ibase_blob *ib_blob;
> >>
> >>      RESET_ERRMSG;
> >>
> >>      if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &blob_arg,
> &string_arg) == FAILURE) {
> >>              WRONG_PARAM_COUNT;
> >>      }
> >>
> >>      ZEND_FETCH_RESOURCE(ib_blob, ibase_blob *, blob_arg, -1,
> "Interbase blob", le_blob);
> >
> > I've got that if changes to
> >
> >>       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
> "rr", &blob_arg, &string_arg)) {
> >>               return;
> >>      }
> >
> > But I suspect I need to change the *string_arg to a character string so
> > 'rc' and add a string_len field. At least that is what I think I'm
> > seeing from the samples I have found.
>
> OK I've got a patch for master, but I know that the changes are not
> complete!
>
> http://hg.lsces.org.uk/hg/php-src/rev/8ec9101f59b6
>

In ibase_blob_get you're declaring 'len_arg' as 'unsigned long'. If you're
using the 'l' type in zpp you should use the 'zend_long'  type instead -
otherwise it will not work correctly on LLP64 (aka Windows) systems.

>
> I've still got a question about the &string_arg on line 1.9 and if it
> should be changed to a string but that change needs working through the
> following code.
>

Yes, this should be changed to a string. E.g. use the 'S' zpp modifier and
declare the variable as 'zend_string *str'. Then modify the places where it
is used from Z_STRVAL_P(...) to str->val and Z_STRLEN_P(...) to str->len.


> Also is what I'm doing here php7 only? so should there be wrappers for a
> PHP5 build?
>

Apart form a few special exceptions we keep PHP7-only codebases in php-src.
They don't need to (and shouldn't) contain any compat code.

As another tip: If you want to link to code in the PHP codebase, I
recommend using http://lxr.php.net/xref/PHP_TRUNK/ instead of GitHub -
lxr.php.net is cross-referenced, so you can click through function usages.

Nikita

Reply via email to