Bug #78682 [Com]: wrong executed if-else

From: Date: Tue, 24 Dec 2019 09:51:57 +0000
Subject: Bug #78682 [Com]: wrong executed if-else
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-224512@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78682&edit=1 ID: 78682 Comment by: bugreports at gmail dot com Reported by: bugreports at gmail dot com Summary: wrong executed if-else Status: Feedback Type: Bug Package: opcache Operating System: Linux PHP Version: master-Git-2019-10-17 (Git) Block user comment: N Private report: N New Comment: seems to be fixed in the current PHP 8 HEAD and for https://bugs.php.net/bug.php?id=78790 i worked around by refcator my database layer to use mysqli in object style BTW: benchmarks with 100& identical environment thrown against 7.2/7.3/7.4/8.0-jit HEAD 7.2: 3119,30 7.3: 3250,43 - +131,13 7.4: 3294,71 - +44,28 - versus 7.2: +175,41 8.0: 3347,46 - +52,75 - versus 7.2: +228,16 Previous Comments: ------------------------------------------------------------------------ [2019-12-24 09:21:40] laruence@php.net Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2019-10-17 22:43:14] bugreports at gmail dot com it is for sure the jit $null is also undefined in the same line no matter if it write it with a swicth or if-else while it's impossible that $null is later in this loop is undefined comment out that two lines from php.ini and the code works as before #opcache.jit_buffer_size = 50000000 #opcache.jit = 1235 foreach($this->parent->query_fetch_all("describe $table") as $row) { $null = 0; if(strtolower($row['Null']) === 'yes') { $null = 1; } .............. } ------------------------------------------------------------------------ [2019-10-17 22:08:40] bugreports at gmail dot com Description: ------------ it's impossiblöe that $ml is undefined in that if-else statement opcache.jit_buffer_size = 50000000 opcache.jit = 1235 Warning: Undefined variable: ml in global_mysql_ext.inc.php on line 581 switch($extended) { default: $arr[$row['Field']] = $x_type; break; case 1: if($maxlength) { $rw = mysqli_fetch_row($this->parent->query("select max(length({$row['Field']})) from $table", 1)); $ml = (int)$rw[0]; } else { $ml = 0; } $arr[$row['Field']] = ['type'=>$x_type, 'null'=>$null, 'length'=>$length, 'maxlength'=>$ml]; /** this is line 581 */ break; } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=78682&edit=1

« previous php.bugs (#224512) next »