aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons/xer_encoder.c
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2004-10-03 09:13:02 +0000
committerLev Walkin <vlm@lionet.info>2004-10-03 09:13:02 +0000
commit942fd081314dc3609151613564b28a42dbf6b1d3 (patch)
treed0257dfb7c46eac1ce147ae28b9cc30bc0b1c3f5 /skeletons/xer_encoder.c
parentd519380089e6cdcf2a94bf71b363cf92fe5d5099 (diff)
allow local cleanup
Diffstat (limited to 'skeletons/xer_encoder.c')
-rw-r--r--skeletons/xer_encoder.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/skeletons/xer_encoder.c b/skeletons/xer_encoder.c
index 3c97a8f7..d3f04d66 100644
--- a/skeletons/xer_encoder.c
+++ b/skeletons/xer_encoder.c
@@ -19,12 +19,7 @@ xer_encode(asn_TYPE_descriptor_t *td, void *sptr,
size_t mlen;
int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2;
- if(!td || !sptr) {
- er.encoded = -1;
- er.failed_type = td;
- er.structure_ptr = sptr;
- return er;
- }
+ if(!td || !sptr) goto cb_failed;
mname = td->name;
mlen = strlen(mname);
@@ -34,11 +29,13 @@ xer_encode(asn_TYPE_descriptor_t *td, void *sptr,
tmper = td->xer_encoder(td, sptr, 1, xer_flags, cb, app_key);
if(tmper.encoded == -1) return tmper;
- _ASN_CALLBACK3("</", xcan, mname, mlen, ">\n",xcan);
+ _ASN_CALLBACK3("</", 2, mname, mlen, ">\n", xcan);
- er.encoded = 2 + (2 * xcan) + (2 * mlen) + tmper.encoded;
+ er.encoded = 4 + xcan + (2 * mlen) + tmper.encoded;
return er;
+cb_failed:
+ _ASN_ENCODE_FAILED;
}
/*