relaxed XER processing rules for whitespace


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@769 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/REAL.c b/skeletons/REAL.c
index 717db89..4b73f4b 100644
--- a/skeletons/REAL.c
+++ b/skeletons/REAL.c
@@ -257,17 +257,17 @@
 /*
  * Decode the chunk of XML text encoding REAL.
  */
-static ssize_t
-REAL__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, void *chunk_buf, size_t chunk_size) {
+static enum xer_pbd_rval
+REAL__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_buf, size_t chunk_size) {
 	REAL_t *st = (REAL_t *)sptr;
 	double value;
-	char *xerdata = (char *)chunk_buf;
+	const char *xerdata = (const char *)chunk_buf;
 	char *endptr = 0;
 	char *b;
 
 	(void)td;
 
-	if(!chunk_size) return -1;
+	if(!chunk_size) return XPBD_BROKEN_ENCODING;
 
 	/*
 	 * Decode an XMLSpecialRealValue: <MINUS-INFINITY>, etc.
@@ -292,33 +292,34 @@
 			case -1: dv = - INFINITY; break;
 			case 0: dv = NAN;	break;
 			case 1: dv = INFINITY;	break;
-			default: return -1;
+			default: return XPBD_SYSTEM_FAILURE;
 			}
 
-			if(asn_double2REAL(st, dv)) return -1;
+			if(asn_double2REAL(st, dv))
+				return XPBD_SYSTEM_FAILURE;
 
-			return chunk_size;
+			return XPBD_BODY_CONSUMED;
 		}
 		ASN_DEBUG("Unknown XMLSpecialRealValue");
-		return -1;
+		return XPBD_BROKEN_ENCODING;
 	}
 
 	/*
 	 * Copy chunk into the nul-terminated string, and run strtod.
 	 */
 	b = (char *)MALLOC(chunk_size + 1);
-	if(!b) return -1;
+	if(!b) return XPBD_SYSTEM_FAILURE;
 	memcpy(b, chunk_buf, chunk_size);
 	b[chunk_size] = 0;	/* nul-terminate */
 
 	value = strtod(b, &endptr);
 	free(b);
-	if(endptr == b) return -1;
+	if(endptr == b) return XPBD_BROKEN_ENCODING;
 
 	if(asn_double2REAL(st, value))
-		return -1;
+		return XPBD_SYSTEM_FAILURE;
 
-	return endptr - b;
+	return XPBD_BODY_CONSUMED;
 }
 
 asn_dec_rval_t