Index: ossp-pkg/xds/vdecode.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/vdecode.c,v rcsdiff -q -kk '-r1.4.2.1' '-r1.4.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/vdecode.c,v' 2>/dev/null --- vdecode.c 2001/08/01 09:55:58 1.4.2.1 +++ vdecode.c 2001/08/01 11:26:16 1.4.2.2 @@ -70,17 +70,20 @@ if (strlen(name) > 0) { size_t pos; + size_t used_buffer_size; if (xds_find_engine(xds->engines, xds->engines_len, name, &pos)) { rc = (*xds->engines[pos].engine)(xds, xds->engines[pos].context, xds->buffer + xds->buffer_len, xds->buffer_capacity - xds->buffer_len, + &used_buffer_size, &args); - if (rc < 0) - goto leave; + assert(rc <= 0); + if (rc == XDS_OK) + xds->buffer_len += used_buffer_size; else - xds->buffer_len += rc; + goto leave; } else { Index: ossp-pkg/xds/vencode.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/vencode.c,v rcsdiff -q -kk '-r1.12.2.1' '-r1.12.2.2' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/vencode.c,v' 2>/dev/null --- vencode.c 2001/08/01 09:55:58 1.12.2.1 +++ vencode.c 2001/08/01 11:26:16 1.12.2.2 @@ -105,6 +105,7 @@ if (xds_find_engine(xds->engines, xds->engines_len, name, &pos)) { int restart_engine; + size_t used_buffer_size; do { args_backup = args; @@ -112,47 +113,33 @@ xds->engines[pos].context, xds->buffer + xds->buffer_len, xds->buffer_capacity - xds->buffer_len, + &used_buffer_size, &args); - if (rc < 0) - goto leave; - else if (rc >= xds->buffer_capacity - xds->buffer_len) + assert(rc <= 0); + if (rc == XDS_OK) + { + restart_engine = XDS_FALSE; + xds->buffer_len += used_buffer_size; + } + else if (rc == XDS_ERR_OVERFLOW) { /* enlarge buffer */ - int rc2; - - if (rc > xds->buffer_capacity - xds->buffer_len) - { - restart_engine = XDS_TRUE; - args = args_backup; - } - else - { - restart_engine = XDS_FALSE; - xds->buffer_len += rc; - } - if (!xds->we_own_buffer) - { - rc = XDS_ERR_OVERFLOW; goto leave; - } - rc2 = xds_set_capacity((void**)&xds->buffer, - &xds->buffer_capacity, - xds->buffer_capacity + rc, - sizeof(char), - XDS_INITIAL_BUFFER_CAPACITY); - assert(rc2 == XDS_OK || rc2 == XDS_ERR_NO_MEM); - if (rc2 != XDS_OK) - { - rc = rc2; + restart_engine = XDS_TRUE; + args = args_backup; + + rc = xds_set_capacity((void**)&xds->buffer, + &xds->buffer_capacity, + xds->buffer_capacity + 1, + sizeof(char), + XDS_INITIAL_BUFFER_CAPACITY); + assert(rc == XDS_OK || rc == XDS_ERR_NO_MEM); + if (rc != XDS_OK) goto leave; - } } else - { - restart_engine = XDS_FALSE; - xds->buffer_len += rc; - } + goto leave; } while (restart_engine); }