18
18
#include "private.h"
19
19
#include <stddef.h>
20
20
21
- void bc_round (bc_num num , zend_long precision , zend_long mode , bc_num * result )
21
+ size_t bc_round (bc_num num , zend_long precision , zend_long mode , bc_num * result )
22
22
{
23
23
/* clear result */
24
24
bc_free_num (result );
@@ -43,19 +43,19 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
43
43
case PHP_ROUND_HALF_ODD :
44
44
case PHP_ROUND_TOWARD_ZERO :
45
45
* result = bc_copy_num (BCG (_zero_ ));
46
- return ;
46
+ return 0 ;
47
47
48
48
case PHP_ROUND_CEILING :
49
49
if (num -> n_sign == MINUS ) {
50
50
* result = bc_copy_num (BCG (_zero_ ));
51
- return ;
51
+ return 0 ;
52
52
}
53
53
break ;
54
54
55
55
case PHP_ROUND_FLOOR :
56
56
if (num -> n_sign == PLUS ) {
57
57
* result = bc_copy_num (BCG (_zero_ ));
58
- return ;
58
+ return 0 ;
59
59
}
60
60
break ;
61
61
@@ -67,7 +67,7 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
67
67
68
68
if (bc_is_zero (num )) {
69
69
* result = bc_copy_num (BCG (_zero_ ));
70
- return ;
70
+ return 0 ;
71
71
}
72
72
73
73
/* If precision is -3, it becomes 1000. */
@@ -78,7 +78,7 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
78
78
}
79
79
(* result )-> n_value [0 ] = 1 ;
80
80
(* result )-> n_sign = num -> n_sign ;
81
- return ;
81
+ return 0 ;
82
82
}
83
83
84
84
/* Just like bcadd('1', '1', 4) becomes '2.0000', it pads with zeros at the end if necessary. */
@@ -90,7 +90,7 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
90
90
(* result )-> n_sign = num -> n_sign ;
91
91
memcpy ((* result )-> n_value , num -> n_value , num -> n_len + num -> n_scale );
92
92
}
93
- return ;
93
+ return precision ;
94
94
}
95
95
96
96
/*
@@ -222,8 +222,12 @@ void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
222
222
}
223
223
224
224
check_zero :
225
- if (bc_is_zero (* result )) {
226
- (* result )-> n_sign = PLUS ;
227
- (* result )-> n_scale = 0 ;
225
+ {
226
+ size_t scale = (* result )-> n_scale ;
227
+ if (bc_is_zero (* result )) {
228
+ (* result )-> n_sign = PLUS ;
229
+ (* result )-> n_scale = 0 ;
230
+ }
231
+ return scale ;
228
232
}
229
233
}
0 commit comments