Pārlūkot izejas kodu

Merge pull request #46 from viest/dev

FIX Memory
王杰新 7 gadi atpakaļ
vecāks
revīzija
36f1504563
2 mainītis faili ar 22 papildinājumiem un 17 dzēšanām
  1. 17 13
      kernel/excel.c
  2. 5 4
      tests/010.phpt

+ 17 - 13
kernel/excel.c

@@ -153,16 +153,18 @@ PHP_METHOD(vtiful_excel, fileName)
 
     GET_CONFIG_PATH(dir_path, vtiful_excel_ce, return_value);
 
-    excel_file_path(file_name, dir_path, &file_path);
-
     excel_object *obj = Z_EXCEL_P(getThis());
 
-    obj->ptr.workbook  = workbook_new(Z_STRVAL(file_path));
-    obj->ptr.worksheet = workbook_add_worksheet(obj->ptr.workbook, NULL);
+    if(obj->ptr.workbook == NULL) {
+        excel_file_path(file_name, dir_path, &file_path);
+
+        obj->ptr.workbook  = workbook_new(Z_STRVAL(file_path));
+        obj->ptr.worksheet = workbook_add_worksheet(obj->ptr.workbook, NULL);
 
-    add_property_zval(return_value, V_EXCEL_FIL, &file_path);
+        add_property_zval(return_value, V_EXCEL_FIL, &file_path);
 
-    zval_ptr_dtor(&file_path);
+        zval_ptr_dtor(&file_path);
+    }
 }
 /* }}} */
 
@@ -181,18 +183,20 @@ PHP_METHOD(vtiful_excel, constMemory)
 
     GET_CONFIG_PATH(dir_path, vtiful_excel_ce, return_value);
 
-    excel_file_path(file_name, dir_path, &file_path);
+    excel_object *obj = Z_EXCEL_P(getThis());
 
-    lxw_workbook_options options = {.constant_memory = LXW_TRUE, .tmpdir = NULL};
+    if(obj->ptr.workbook == NULL) {
+        excel_file_path(file_name, dir_path, &file_path);
 
-    excel_object *obj = Z_EXCEL_P(getThis());
+        lxw_workbook_options options = {.constant_memory = LXW_TRUE, .tmpdir = NULL};
 
-    obj->ptr.workbook  = workbook_new_opt(Z_STRVAL(file_path), &options);
-    obj->ptr.worksheet = workbook_add_worksheet(obj->ptr.workbook, NULL);
+        obj->ptr.workbook  = workbook_new_opt(Z_STRVAL(file_path), &options);
+        obj->ptr.worksheet = workbook_add_worksheet(obj->ptr.workbook, NULL);
 
-    add_property_zval(return_value, V_EXCEL_FIL, &file_path);
+        add_property_zval(return_value, V_EXCEL_FIL, &file_path);
 
-    zval_ptr_dtor(&file_path);
+        zval_ptr_dtor(&file_path);
+    }
 }
 /* }}} */
 

+ 5 - 4
tests/010.phpt

@@ -5,14 +5,15 @@ Check for vtiful presence
 --FILE--
 <?php 
 $config = ['path' => './tests'];
-$excel  = new \Vtiful\Kernel\Excel($config);
-$fileOne = $excel->fileName('tutorial01.xlsx')
+$excel_one  = new \Vtiful\Kernel\Excel($config);
+$fileOne = $excel_one->fileName('tutorial01.xlsx')
     ->header(['test1'])
     ->data([
-      ['data1'],
+        ['data1'],
     ])
     ->output();
-$fileTwo = $excel->fileName('tutorial02.xlsx')
+$excel_two  = new \Vtiful\Kernel\Excel($config);
+$fileTwo = $excel_two->fileName('tutorial02.xlsx')
     ->header(['test2'])
     ->data([
         ['data2'],