Просмотр исходного кода

Fix: sheet call back value is null

viest 5 лет назад
Родитель
Сommit
eb6714ed72
1 измененных файлов с 7 добавлено и 0 удалено
  1. 7 0
      kernel/read.c

+ 7 - 0
kernel/read.c

@@ -290,6 +290,11 @@ int sheet_cell_callback (size_t row, size_t col, const char *value, void *callba
     ZVAL_LONG(&args[0], (row - 1));
     ZVAL_LONG(&args[0], (row - 1));
     ZVAL_LONG(&args[1], (col - 1));
     ZVAL_LONG(&args[1], (col - 1));
 
 
+    if (value == NULL) {
+        ZVAL_NULL(&args[2]);
+        goto CALL_USER_FUNCTION;
+    }
+
     if (Z_TYPE_P(_callback_data->zv_type_t) != IS_ARRAY) {
     if (Z_TYPE_P(_callback_data->zv_type_t) != IS_ARRAY) {
         zend_long _long = 0; double _double = 0;
         zend_long _long = 0; double _double = 0;
 
 
@@ -318,6 +323,8 @@ int sheet_cell_callback (size_t row, size_t col, const char *value, void *callba
         data_to_custom_type(value, _type, &args[2]);
         data_to_custom_type(value, _type, &args[2]);
     }
     }
 
 
+    CALL_USER_FUNCTION:
+
     zend_call_function(_callback_data->fci, _callback_data->fci_cache);
     zend_call_function(_callback_data->fci, _callback_data->fci_cache);
 
 
     zval_ptr_dtor(&args[2]);
     zval_ptr_dtor(&args[2]);