diff options
author | drh <drh@noemail.net> | 2007-12-13 17:50:22 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2007-12-13 17:50:22 +0000 |
commit | 43f6e06460cfed6534ddb496bb18980ec1bfbee0 (patch) | |
tree | 6a0ebbd6e0fc2b52e443de408e9d5c185b491359 /src/printf.c | |
parent | 61116ae1cad0917a3f7686c53ba773e7edc7f957 (diff) | |
download | sqlite-43f6e06460cfed6534ddb496bb18980ec1bfbee0.tar.gz sqlite-43f6e06460cfed6534ddb496bb18980ec1bfbee0.zip |
Additional test cases for tkt2822. Fix a related bug in printf(). (CVS 4624)
FossilOrigin-Name: 8f184e40ff79c3c5ef98337615f58a4a6d0249dd
Diffstat (limited to 'src/printf.c')
-rw-r--r-- | src/printf.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/printf.c b/src/printf.c index ab88e23fa..eafe842a1 100644 --- a/src/printf.c +++ b/src/printf.c @@ -414,6 +414,13 @@ static void vxprintf( } bufpt = &buf[etBUFSIZE-1]; if( xtype==etORDINAL ){ + static const char zOrd[] = "thstndrd"; + int x = longvalue % 10; + if( x>=4 || (longvalue/10)%10==1 ){ + x = 0; + } + buf[etBUFSIZE-3] = zOrd[x*2]; + buf[etBUFSIZE-2] = zOrd[x*2+1]; bufpt -= 2; } { @@ -426,13 +433,6 @@ static void vxprintf( longvalue = longvalue/base; }while( longvalue>0 ); } - if( xtype==etORDINAL ){ - static const char zOrd[] = "thstndrd"; - int x = buf[etBUFSIZE-4] - '0'; - if( x>=4 ) x = 0; - buf[etBUFSIZE-3] = zOrd[x*2]; - buf[etBUFSIZE-2] = zOrd[x*2+1]; - } length = &buf[etBUFSIZE-1]-bufpt; for(idx=precision-length; idx>0; idx--){ *(--bufpt) = '0'; /* Zero pad */ |