@@ -63,6 +63,7 @@ static void _breakiter_factory(const char *func_name,
6363
6464 biter = func (Locale::createFromName (locale_str), status);
6565 intl_error_set_code (NULL , status);
66+ // Todo check if this can happen?
6667 if (U_FAILURE (status)) {
6768 spprintf (&msg, 0 , " %s: error creating BreakIterator" ,
6869 func_name);
@@ -170,7 +171,6 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, setText)
170171}
171172
172173static void _breakiter_no_args_ret_int32 (
173- const char *func_name,
174174 int32_t (BreakIterator::*func)(),
175175 INTERNAL_FUNCTION_PARAMETERS)
176176{
@@ -190,11 +190,9 @@ static void _breakiter_no_args_ret_int32(
190190}
191191
192192static void _breakiter_int32_ret_int32 (
193- const char *func_name,
194193 int32_t (BreakIterator::*func)(int32_t ),
195194 INTERNAL_FUNCTION_PARAMETERS)
196195{
197- char *msg;
198196 zend_long arg;
199197 BREAKITER_METHOD_INIT_VARS;
200198 object = ZEND_THIS;
@@ -206,11 +204,8 @@ static void _breakiter_int32_ret_int32(
206204 BREAKITER_METHOD_FETCH_OBJECT;
207205
208206 if (arg < INT32_MIN || arg > INT32_MAX) {
209- spprintf (&msg, 0 , " %s: offset argument is outside bounds of "
210- " a 32-bit wide integer" , func_name);
211- intl_error_set (NULL , U_ILLEGAL_ARGUMENT_ERROR, msg, 1 );
212- efree (msg);
213- RETURN_FALSE;
207+ zend_argument_value_error (1 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
208+ RETURN_THROWS ();
214209 }
215210
216211 int32_t res = (bio->biter ->*func)((int32_t )arg);
@@ -220,22 +215,19 @@ static void _breakiter_int32_ret_int32(
220215
221216U_CFUNC PHP_METHOD (IntlBreakIterator, first)
222217{
223- _breakiter_no_args_ret_int32 (" breakiter_first" ,
224- &BreakIterator::first,
218+ _breakiter_no_args_ret_int32 (&BreakIterator::first,
225219 INTERNAL_FUNCTION_PARAM_PASSTHRU);
226220}
227221
228222U_CFUNC PHP_METHOD (IntlBreakIterator, last)
229223{
230- _breakiter_no_args_ret_int32 (" breakiter_last" ,
231- &BreakIterator::last,
224+ _breakiter_no_args_ret_int32 (&BreakIterator::last,
232225 INTERNAL_FUNCTION_PARAM_PASSTHRU);
233226}
234227
235228U_CFUNC PHP_METHOD (IntlBreakIterator, previous)
236229{
237- _breakiter_no_args_ret_int32 (" breakiter_previous" ,
238- &BreakIterator::previous,
230+ _breakiter_no_args_ret_int32 (&BreakIterator::previous,
239231 INTERNAL_FUNCTION_PARAM_PASSTHRU);
240232}
241233
@@ -253,12 +245,10 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, next)
253245 if (arg == NULL ) {
254246 ZEND_NUM_ARGS () = 0 ; /* pretend we don't have any argument */
255247 no_arg_version:
256- _breakiter_no_args_ret_int32 (" breakiter_next" ,
257- &BreakIterator::next,
248+ _breakiter_no_args_ret_int32 (&BreakIterator::next,
258249 INTERNAL_FUNCTION_PARAM_PASSTHRU);
259250 } else {
260- _breakiter_int32_ret_int32 (" breakiter_next" ,
261- &BreakIterator::next,
251+ _breakiter_int32_ret_int32 (&BreakIterator::next,
262252 INTERNAL_FUNCTION_PARAM_PASSTHRU);
263253 }
264254}
@@ -281,14 +271,14 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, current)
281271
282272U_CFUNC PHP_METHOD (IntlBreakIterator, following)
283273{
284- _breakiter_int32_ret_int32 (" breakiter_following " ,
274+ _breakiter_int32_ret_int32 (
285275 &BreakIterator::following,
286276 INTERNAL_FUNCTION_PARAM_PASSTHRU);
287277}
288278
289279U_CFUNC PHP_METHOD (IntlBreakIterator, preceding)
290280{
291- _breakiter_int32_ret_int32 (" breakiter_preceding " ,
281+ _breakiter_int32_ret_int32 (
292282 &BreakIterator::preceding,
293283 INTERNAL_FUNCTION_PARAM_PASSTHRU);
294284}
@@ -305,10 +295,8 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, isBoundary)
305295 }
306296
307297 if (offset < INT32_MIN || offset > INT32_MAX) {
308- intl_error_set (NULL , U_ILLEGAL_ARGUMENT_ERROR,
309- " breakiter_is_boundary: offset argument is outside bounds of "
310- " a 32-bit wide integer" , 0 );
311- RETURN_FALSE;
298+ zend_argument_value_error (1 , " must be between %d and %d" , INT32_MIN, INT32_MAX);
299+ RETURN_THROWS ();
312300 }
313301
314302 BREAKITER_METHOD_FETCH_OBJECT;
@@ -328,6 +316,7 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getLocale)
328316 RETURN_THROWS ();
329317 }
330318
319+ /* Change to ValueError? */
331320 if (locale_type != ULOC_ACTUAL_LOCALE && locale_type != ULOC_VALID_LOCALE) {
332321 intl_error_set (NULL , U_ILLEGAL_ARGUMENT_ERROR,
333322 " breakiter_get_locale: invalid locale type" , 0 );
@@ -357,9 +346,9 @@ U_CFUNC PHP_METHOD(IntlBreakIterator, getPartsIterator)
357346 if (key_type != PARTS_ITERATOR_KEY_SEQUENTIAL
358347 && key_type != PARTS_ITERATOR_KEY_LEFT
359348 && key_type != PARTS_ITERATOR_KEY_RIGHT) {
360- intl_error_set ( NULL , U_ILLEGAL_ARGUMENT_ERROR,
361- " breakiter_get_parts_iterator: bad key type " , 0 );
362- RETURN_FALSE ;
349+ zend_argument_value_error ( 1 , " must be one of IntlPartsIterator::KEY_SEQUENTIAL, "
350+ " IntlPartsIterator::KEY_LEFT, or IntlPartsIterator::KEY_RIGHT " );
351+ RETURN_THROWS () ;
363352 }
364353
365354 BREAKITER_METHOD_FETCH_OBJECT;
0 commit comments