diff --git a/ChangeLog b/ChangeLog index 9c9b92a1c..988feafc2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,6 +15,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA thanks to Craig Duncan - duncan3dc - bug #3112614 [pdf schema] Scratchboard for PDF pages not working - bug #3125606 [parser] Query for table "level" causes strange display +- bug #3127904 [parser] Close all opened round brackets indents 3.3.8.1 (2010-11-29) - bug #3115519 (private) [security] XSS on db search, see PMASA-2010-8 diff --git a/libraries/sqlparser.lib.php b/libraries/sqlparser.lib.php index 738d2fb88..3db530826 100644 --- a/libraries/sqlparser.lib.php +++ b/libraries/sqlparser.lib.php @@ -2165,7 +2165,6 @@ if (! defined('PMA_MINIMUM_COMMON')) { // DEBUG echo "Loop format " . $arr[$i]['data'] . " " . $arr[$i]['type'] . "
"; $before = ''; $after = ''; - $indent = 0; // array_shift($typearr); /* 0 prev2 @@ -2265,17 +2264,20 @@ if (! defined('PMA_MINIMUM_COMMON')) { } break; case 'punct_bracket_close_round': - $bracketlevel--; - if ($infunction == TRUE) { - $functionlevel--; - $after .= ' '; - $before .= ' '; - } else { - $indent--; - $before .= ($mode != 'query_only' ? '' : ' '); - } - $infunction = ($functionlevel > 0) ? TRUE : FALSE; - break; + // only close bracket level when it was opened before + if ($bracketlevel > 0) { + $bracketlevel--; + if ($infunction == TRUE) { + $functionlevel--; + $after .= ' '; + $before .= ' '; + } else { + $indent--; + $before .= ($mode != 'query_only' ? '' : ' '); + } + $infunction = ($functionlevel > 0) ? TRUE : FALSE; + } + break; case 'alpha_columnType': if ($typearr[3] == 'alpha_columnAttrib') { $after .= ' '; @@ -2466,6 +2468,11 @@ if (! defined('PMA_MINIMUM_COMMON')) { } $str .= $after; } // end for + // close unclosed indent levels + while ($indent > 0) { + $indent--; + $str .= ($mode != 'query_only' ? '' : ' '); + } if ($mode=='color') { $str .= ''; }