clean-up; removed unnecessary field from type descriptor
diff --git a/skeletons/der_encoder.c b/skeletons/der_encoder.c
index 3d5cc85..9ac0afb 100644
--- a/skeletons/der_encoder.c
+++ b/skeletons/der_encoder.c
@@ -34,7 +34,7 @@
ssize_t
der_write_tags(asn1_TYPE_descriptor_t *sd,
size_t struct_length,
- int tag_mode,
+ int tag_mode, int last_tag_form,
ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */
asn_app_consume_bytes_f *cb,
void *app_key) {
@@ -112,10 +112,8 @@
ssize_t len;
int _constr;
- /* If this one happens to be constructed, do it. */
- if(i < (tags_count - 1) || sd->last_tag_form == 1)
- _constr = 1;
- else _constr = 0;
+ /* Check if this tag happens to be constructed */
+ _constr = (last_tag_form || i < (tags_count - 1));
len = der_write_TL(tags[i], lens[i], cb, app_key, _constr);
if(len == -1) return -1;
@@ -151,9 +149,8 @@
*/
if(cb) {
if(constructed) *buf |= 0x20;
- if(cb(buf, size, app_key) == -1) {
+ if(cb(buf, size, app_key) < 0)
return -1;
- }
}
return size;