Ошибка сегментации при вызове метода внутри расширения php

Я пытаюсь передать некоторые данные объекту, хранящемуся в zval, внутри расширения php с помощью этого кода, и я получаю сообщение об ошибке сегментации.

[core:notice] [pid 8645] AH00052: дочерний pid 8649 выходной сигнал Ошибка сегментации (11)

Кто-нибудь может помочь мне понять, почему я получаю эту ошибку и как правильно вызывать метод объекта?

Благодарность!

    //create zval with the data
    zval *zbuffer;
    MAKE_STD_ZVAL(zbuffer);
    ZVAL_STRINGL(zbuffer, WS_G(buffer), WS_G(bufferLen), 1);

    ///push data in object
    zval *retval_ptr;
    zend_call_method( *WS_G(zobj), ce, NULL, "push",  strlen("push"),  &retval_ptr, 1, zbuffer, NULL TSRMLS_CC );

person Szabo Bogdan    schedule 25.10.2013    source источник
comment
Что с двумя последними аргументами zend_call_method()? Я думаю, что zbuffer, NULL TSRMLS_CC ); должно быть zbuffer, NULL, TSRMLS_CC ); или это ошибка копирования/вставки?   -  person Havelock    schedule 25.10.2013


Ответы (1)


Кажется, проблема заключалась в том, как я создавал zbuffer ZVAL, правильный код:

    zval *zbuffer;
    MAKE_STD_ZVAL(zbuffer);
    Z_TYPE_P(zbuffer) = IS_STRING;
    Z_STRVAL_P(zbuffer) = WS_G(buffer);
    Z_STRLEN_P(zbuffer) = WS_G(bufferLen);

Спасибо!

person Szabo Bogdan    schedule 25.10.2013