2013-10-25 218 views
0

我試圖一些數據傳遞到存儲在的zval,PHP擴展與此代碼內的對象,並且我接收分段錯誤分段故障

[芯:注意] [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); 
+0

'zend_call_method()'的最後兩個參數是什麼?我認爲'zbuffer,NULL TSRMLS_CC);'應該是'zbuffer,NULL,TSRMLS_CC);'或者這是一個複製/粘貼錯誤? – Havelock

回答

0

看來,這個問題是關於我是如何創造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); 

謝謝!