printf() field limiters broke between 4.2.3 and 4.3.0
| Bug #22227 | printf() field limiters broke between 4.2.3 and 4.3.0 | ||||
|---|---|---|---|---|---|
| Submitted: | 2003-02-14 17:59 UTC | Modified: | 2003-02-15 10:01 UTC | ||
| From: | andy at petdance dot com | Assigned: | moriyoshi (profile) | ||
| Status: | Closed | Package: | Output Control | ||
| PHP Version: | 4.3.0 / 4CVS-2003-02-16 / 5CVS-2003-02-16 | OS: | Linux | ||
| Private report: | No | CVE-ID: | None | ||
[2003-02-14 17:59 UTC] andy at petdance dot com
Witness the following code:
printf( "PHP Version=%s\n", phpversion() );
print "Output should be [abc] in all cases\n";
$masks = Array( "%-3.3s", "%.3s", "%-.3s" );
$str = "abcdefg";
foreach ( $masks as $mask ) {
printf( "[$mask] <-- %s\n", $str, $mask );
}
Under 4.2.3 we get:
PHP Version=4.2.3
Output should be [abc] in all cases
[abc] <-- %-3.3s
[abc] <-- %.3s
[abc] <-- %-.3s
Under 4.3.0 we get:
PHP Version=4.3.0
Output should be [abc] in all cases
[abcdefg] <-- %-3.3s
[abc] <-- %.3s
[abc] <-- %-.3s
This breaks a TON of column-formatting code for our application. We're reverting to 4.2.3 until this is fixed.
The test suite in ext/standard/tests/general_functions/001.phpt does not test that specific combination of width & precision.
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2003-02-15 10:01 UTC] moriyoshi@php.net