aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons/REAL.c
diff options
context:
space:
mode:
authorvlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2005-04-25 21:08:25 +0000
committervlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2005-04-25 21:08:25 +0000
commit0919fcca82378c887236bde972992ee52ad9127d (patch)
treef56cc2816cb6e80889a8d5677d446734544b52f8 /skeletons/REAL.c
parent82abba82cd105665c41b5dd76844bab8a38e8d2a (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.c14
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++;
}