@@ -1527,24 +1527,23 @@ public function getFunctionEntry(): string {
15271527 $ code .= "#if (PHP_VERSION_ID >= " . PHP_84_VERSION_ID . ") \n" ;
15281528 }
15291529
1530- $ php84AndAboveFlags = array_slice ($ flagsByPhpVersions , 5 , null , true );
15311530 $ docComment = $ this ->exposedDocComment ? '" ' . $ this ->exposedDocComment ->escape () . '" ' : "NULL " ;
15321531 $ framelessFuncInfosName = !empty ($ this ->framelessFunctionInfos ) ? $ this ->getFramelessFunctionInfosName () : "NULL " ;
15331532
15341533 $ code .= generateVersionDependentFlagCode (
15351534 "\tZEND_RAW_FENTRY( $ zendName, $ name, $ argInfoName, %s, $ framelessFuncInfosName, $ docComment) \n" ,
1536- $ php84AndAboveFlags ,
1535+ $ flagsByPhpVersions ,
15371536 PHP_84_VERSION_ID
15381537 );
15391538
15401539 if (!$ php84MinimumCompatibility ) {
15411540 $ code .= "#else \n" ;
15421541
1543- $ flags = array_slice ($ flagsByPhpVersions , 0 , 4 , true );
15441542 $ code .= generateVersionDependentFlagCode (
15451543 "\tZEND_RAW_FENTRY( $ zendName, $ name, $ argInfoName, %s) \n" ,
1546- $ flags ,
1547- $ this ->minimumPhpVersionIdCompatibility
1544+ $ flagsByPhpVersions ,
1545+ $ this ->minimumPhpVersionIdCompatibility ,
1546+ PHP_83_VERSION_ID
15481547 );
15491548
15501549 $ code .= "#endif \n" ;
@@ -5477,8 +5476,12 @@ function generateOptimizerInfo(array $funcMap): string {
54775476 * @param array<int, string[]> $flagsByPhpVersions
54785477 * @return string
54795478 */
5480- function generateVersionDependentFlagCode (string $ codeTemplate , array $ flagsByPhpVersions , ?int $ phpVersionIdMinimumCompatibility ): string
5481- {
5479+ function generateVersionDependentFlagCode (
5480+ string $ codeTemplate ,
5481+ array $ flagsByPhpVersions ,
5482+ ?int $ phpVersionIdMinimumCompatibility ,
5483+ ?int $ phpVersionIdMaxCompatibility = null
5484+ ): string {
54825485 $ phpVersions = ALL_PHP_VERSION_IDS ;
54835486 sort ($ phpVersions );
54845487 $ currentPhpVersion = end ($ phpVersions );
@@ -5492,13 +5495,21 @@ function generateVersionDependentFlagCode(string $codeTemplate, array $flagsByPh
54925495 return sprintf ($ codeTemplate , implode ("| " , $ flagsByPhpVersions [$ currentPhpVersion ]));
54935496 }
54945497
5495- // Remove flags which depend on a PHP version below the minimally supported one
54965498 ksort ($ flagsByPhpVersions );
5499+ // Remove flags which depend on a PHP version below the minimally supported one
54975500 $ index = array_search ($ phpVersionIdMinimumCompatibility , array_keys ($ flagsByPhpVersions ));
54985501 if ($ index === false ) {
54995502 throw new Exception ("Missing version dependent flags for PHP version ID \"$ phpVersionIdMinimumCompatibility \"" );
55005503 }
55015504 $ flagsByPhpVersions = array_slice ($ flagsByPhpVersions , $ index , null , true );
5505+ if ($ phpVersionIdMaxCompatibility !== null ) {
5506+ // Remove flags which depend on a PHP version above the maximally supported one
5507+ $ index = array_search ($ phpVersionIdMaxCompatibility , array_keys ($ flagsByPhpVersions ));
5508+ if ($ index === false ) {
5509+ throw new Exception ("Missing version dependent flags for PHP version ID \"$ phpVersionIdMaxCompatibility \"" );
5510+ }
5511+ $ flagsByPhpVersions = array_slice ($ flagsByPhpVersions , 0 , $ index , true );
5512+ }
55025513
55035514 // Remove empty version-specific flags
55045515 $ flagsByPhpVersions = array_filter ($ flagsByPhpVersions );
0 commit comments