File tree 2 files changed +23
-2
lines changed
2 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -433,16 +433,26 @@ static void MoladOfMetonicCycle(
433
433
zend_long * pMoladHalakim )
434
434
{
435
435
register zend_ulong r1 , r2 , d1 , d2 ;
436
+ zend_long chk ;
436
437
437
438
/* Start with the time of the first molad after creation. */
438
439
r1 = NEW_MOON_OF_CREATION ;
440
+ chk = (zend_long )metonicCycle ;
441
+
442
+ if (chk == ZEND_LONG_MAX ||
443
+ chk * (HALAKIM_PER_METONIC_CYCLE & 0xFFFF ) == ZEND_LONG_MAX ||
444
+ chk * ((HALAKIM_PER_METONIC_CYCLE >> 16 ) & 0xFFFF ) == ZEND_LONG_MAX ) {
445
+ * pMoladDay = 0 ;
446
+ * pMoladHalakim = 0 ;
447
+ return ;
448
+ }
439
449
440
450
/* Calculate metonicCycle * HALAKIM_PER_METONIC_CYCLE. The upper 32
441
451
* bits of the result will be in r2 and the lower 16 bits will be
442
452
* in r1. */
443
- r1 += metonicCycle * (HALAKIM_PER_METONIC_CYCLE & 0xFFFF );
453
+ r1 += chk * (HALAKIM_PER_METONIC_CYCLE & 0xFFFF );
444
454
r2 = r1 >> 16 ;
445
- r2 += metonicCycle * ((HALAKIM_PER_METONIC_CYCLE >> 16 ) & 0xFFFF );
455
+ r2 += chk * ((HALAKIM_PER_METONIC_CYCLE >> 16 ) & 0xFFFF );
446
456
447
457
/* Calculate r2r1 / HALAKIM_PER_DAY. The remainder will be in r1, the
448
458
* upper 16 bits of the quotient will be in d2 and the lower 16 bits
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ GH-16234 jewishtojd overflow on year argument
3
+ --EXTENSIONS--
4
+ calendar
5
+ --FILE--
6
+ <?php
7
+ jewishtojd (1218182888 , 1 , 1218182888 );
8
+ echo "DONE " ;
9
+ ?>
10
+ --EXPECT--
11
+ DONE
You can’t perform that action at this time.
0 commit comments