diff options
author | vlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826> | 2005-04-25 21:08:25 +0000 |
---|---|---|
committer | vlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826> | 2005-04-25 21:08:25 +0000 |
commit | 0919fcca82378c887236bde972992ee52ad9127d (patch) | |
tree | f56cc2816cb6e80889a8d5677d446734544b52f8 /skeletons/REAL.c | |
parent | 82abba82cd105665c41b5dd76844bab8a38e8d2a (diff) |
BASIC-XER value printing fixed for REAL values
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@876 59561ff5-6e30-0410-9f3c-9617f08c8826
Diffstat (limited to 'skeletons/REAL.c')
-rw-r--r-- | skeletons/REAL.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/skeletons/REAL.c b/skeletons/REAL.c index 92b42d2a..6ec6b6e9 100644 --- a/skeletons/REAL.c +++ b/skeletons/REAL.c @@ -187,16 +187,24 @@ REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key) */ char *end = buf + buflen; char *last_zero = end; + int stoplooking = 0; char *z; for(z = end - 1; z > buf; z--) { switch(*z) { - case 0x030: - last_zero = z; + case 0x30: + if(!stoplooking) + last_zero = z; + continue; case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + stoplooking = 1; continue; default: /* Catch dot and other separators */ - *z = 0x2e; /* Replace possible comma */ + /* + * Replace possible comma (which may even + * be not a comma at all: locale-defined). + */ + *z = 0x2e; if(last_zero == z + 1) { /* leave x.0 */ last_zero++; } |