Index: ossp-pkg/xds/vdecode.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/vdecode.c,v rcsdiff -q -kk '-r1.3' '-r1.4' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/vdecode.c,v' 2>/dev/null --- vdecode.c 2001/07/16 17:50:07 1.3 +++ vdecode.c 2001/07/24 15:46:18 1.4 @@ -32,6 +32,7 @@ int xds_vdecode(xds_t* xds, const char* fmt_arg, va_list args) { + size_t buffer_len_backup; char* name; char* p; char* fmt; @@ -58,6 +59,7 @@ fmt = p = strdup(fmt_arg); if (fmt == NULL) return XDS_ERR_NO_MEM; + buffer_len_backup = xds->buffer_len; for(name = p; *p != '\0'; name = p) { while(isalnum(*p) || *p == '-' || *p == '_') @@ -94,5 +96,7 @@ /* Clean up and leave. */ leave: free(fmt); + if (rc != XDS_OK) + xds->buffer_len = buffer_len_backup; return rc; } Index: ossp-pkg/xds/vencode.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/vencode.c,v rcsdiff -q -kk '-r1.10' '-r1.11' -u '/v/ossp/cvs/ossp-pkg/xds/Attic/vencode.c,v' 2>/dev/null --- vencode.c 2001/07/19 15:21:35 1.10 +++ vencode.c 2001/07/24 15:46:18 1.11 @@ -33,6 +33,7 @@ int xds_vencode(xds_t* xds, const char* fmt_arg, va_list args) { va_list args_backup; + size_t buffer_len_backup; char* name; char* p; char* fmt; @@ -90,6 +91,7 @@ fmt = p = strdup(fmt_arg); if (fmt == NULL) return XDS_ERR_NO_MEM; + buffer_len_backup = xds->buffer_len; for(name = p; *p != '\0'; name = p) { while(isalnum(*p) || *p == '-' || *p == '_') @@ -125,7 +127,10 @@ args = args_backup; } else + { restart_engine = XDS_FALSE; + xds->buffer_len += rc; + } if (!xds->we_own_buffer) { @@ -165,5 +170,7 @@ /* Clean up and leave. */ leave: free(fmt); + if (rc != XDS_OK) + xds->buffer_len = buffer_len_backup; return rc; }