Skip to content

Commit f300a00

Browse files
authored
Merge pull request #416 from viest/dev
Feat(Read): big numbers
2 parents 33b0b88 + 05354cc commit f300a00

File tree

5 files changed

+55
-7
lines changed

5 files changed

+55
-7
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
*.lo
33
*.la
44
.libs
5+
.idea
6+
.DS_Store
57
.dockerignore
68
Dockerfile
79
debug
@@ -40,7 +42,6 @@ tests/*/*.exp
4042
tests/*/*.log
4143
tests/*/*.sh
4244
tmp-php.ini
43-
.idea
4445
cmake-build-debug
4546
CMakeLists.txt
4647
local_test.php

kernel/read.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,22 +180,22 @@ void data_to_custom_type(const char *string_value, const size_t string_value_len
180180
is_numeric_string(string_value, string_value_length, &_long, &_double, 0);
181181

182182
if (Z_TYPE_P(zv_result_t) == IS_ARRAY) {
183-
if (_double > 0) {
183+
if (_double > 0 && _double <= (double)ZEND_LONG_MAX) {
184184
add_index_double(zv_result_t, zv_hashtable_index, _double);
185185
return;
186186
}
187187

188-
if (_long > 0) {
188+
if (_long > 0 && _long <= ZEND_LONG_MAX) {
189189
add_index_long(zv_result_t, zv_hashtable_index, _long);
190190
return;
191191
}
192192
} else {
193-
if (_double > 0) {
193+
if (_double > 0 && _double <= (double)ZEND_LONG_MAX) {
194194
ZVAL_DOUBLE(zv_result_t, _double);
195195
return;
196196
}
197197

198-
if (_long > 0) {
198+
if (_long > 0 && _long <= ZEND_LONG_MAX) {
199199
ZVAL_LONG(zv_result_t, _long);
200200
return;
201201
}

kernel/write.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,13 @@ void merge_cells(zend_string *range, zval *value, xls_resource_write_t *res, lxw
321321
*/
322322
void set_column(zend_string *range, double width, xls_resource_write_t *res, lxw_format *format)
323323
{
324-
worksheet_set_column(res->worksheet, COLS(ZSTR_VAL(range)), width, format);
324+
int error = worksheet_set_column(res->worksheet, COLS(ZSTR_VAL(range)), width, format);
325+
326+
// Cells that have been placed cannot be modified using optimization mode
327+
WORKSHEET_INDEX_OUT_OF_CHANGE_IN_OPTIMIZE_EXCEPTION(res, error)
328+
329+
// Worksheet row or column index out of range
330+
WORKSHEET_INDEX_OUT_OF_CHANGE_EXCEPTION(error)
325331
}
326332

327333
/*

tests/data_string_key.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var_dump($excel->nextRow());
3333
?>
3434
--CLEAN--
3535
<?php
36-
@unlink(__DIR__ . '/open_xlsx_next_row.xlsx');
36+
@unlink(__DIR__ . '/data_string_key.xlsx');
3737
?>
3838
--EXPECT--
3939
array(2) {
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
--TEST--
2+
Check for vtiful presence
3+
--SKIPIF--
4+
<?php
5+
require __DIR__ . '/include/skipif.inc';
6+
skip_disable_reader();
7+
?>
8+
--FILE--
9+
<?php
10+
$config = ['path' => './tests'];
11+
$excel = new \Vtiful\Kernel\Excel($config);
12+
$filePath = $excel->fileName('open_xlsx_get_data_bignumbers.xlsx')
13+
->header(['Item'])
14+
->data([
15+
['9999999999999999999999999999999999999999999999999999999999999'],
16+
])
17+
->output();
18+
19+
$data = $excel->openFile('open_xlsx_get_data_bignumbers.xlsx')
20+
->openSheet()
21+
->getSheetData();
22+
23+
var_dump($data);
24+
?>
25+
--CLEAN--
26+
<?php
27+
@unlink(__DIR__ . '/open_xlsx_get_data_bignumbers.xlsx');
28+
?>
29+
--EXPECT--
30+
array(2) {
31+
[0]=>
32+
array(1) {
33+
[0]=>
34+
string(4) "Item"
35+
}
36+
[1]=>
37+
array(1) {
38+
[0]=>
39+
string(61) "9999999999999999999999999999999999999999999999999999999999999"
40+
}
41+
}

0 commit comments

Comments
 (0)