guard against uninitialized property write, too
[m6w6/ext-pq] / src / php_pq_module.c
index 02cd6dbc8ccc89dee746abf9023b4319acf33bd7..786430429b136319020f2de0ae1314da31336a54 100644 (file)
@@ -62,6 +62,7 @@ static PHP_MINIT_FUNCTION(pq)
        PHP_MINIT_CALL(pqres);
        PHP_MINIT_CALL(pqstm);
        PHP_MINIT_CALL(pqtxn);
+       PHP_MINIT_CALL(pqcur);
 
        PHP_MINIT_CALL(pqcopy);
        PHP_MINIT_CALL(pqlob);
@@ -69,9 +70,25 @@ static PHP_MINIT_FUNCTION(pq)
        return php_persistent_handle_provide(ZEND_STRL("pq\\Connection"), php_pqconn_get_resource_factory_ops(), NULL, NULL TSRMLS_CC);
 }
 
+#define PHP_MSHUT_CALL(i) do { \
+       if (SUCCESS != PHP_MSHUTDOWN(i)(type, module_number TSRMLS_CC)) { \
+               return FAILURE; \
+       } \
+} while(0)
+
 static PHP_MSHUTDOWN_FUNCTION(pq)
 {
        php_persistent_handle_cleanup(ZEND_STRL("pq\\Connection"), NULL, 0 TSRMLS_CC);
+
+       PHP_MSHUT_CALL(pqlob);
+       PHP_MSHUT_CALL(pqcopy);
+       PHP_MSHUT_CALL(pqtxn);
+       PHP_MSHUT_CALL(pqstm);
+       PHP_MSHUT_CALL(pqres);
+       PHP_MSHUT_CALL(pqtypes);
+       PHP_MSHUT_CALL(pqcancel);
+       PHP_MSHUT_CALL(pqconn);
+
        return SUCCESS;
 }
 
@@ -84,7 +101,7 @@ static PHP_MINFO_FUNCTION(pq)
 
        php_info_print_table_start();
        php_info_print_table_header(2, "PQ Support", "enabled");
-       php_info_print_table_row(2, "Extension Version", PHP_PQ_EXT_VERSION);
+       php_info_print_table_row(2, "Extension Version", PHP_PQ_VERSION);
        php_info_print_table_end();
 
        php_info_print_table_start();
@@ -118,7 +135,7 @@ zend_module_entry pq_module_entry = {
        NULL,/*PHP_RINIT(pq),*/
        NULL,/*PHP_RSHUTDOWN(pq),*/
        PHP_MINFO(pq),
-       PHP_PQ_EXT_VERSION,
+       PHP_PQ_VERSION,
        STANDARD_MODULE_PROPERTIES
 };