diff options
author | Lev Walkin <vlm@lionet.info> | 2004-10-03 09:13:02 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2004-10-03 09:13:02 +0000 |
commit | 942fd081314dc3609151613564b28a42dbf6b1d3 (patch) | |
tree | d0257dfb7c46eac1ce147ae28b9cc30bc0b1c3f5 /skeletons/xer_encoder.c | |
parent | d519380089e6cdcf2a94bf71b363cf92fe5d5099 (diff) |
allow local cleanup
Diffstat (limited to 'skeletons/xer_encoder.c')
-rw-r--r-- | skeletons/xer_encoder.c | 13 |
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; } /* |