--- vencode.c 2001/08/01 11:26:16 1.12.2.2
+++ vencode.c 2001/08/01 12:01:32 1.12.2.3
@@ -63,26 +63,6 @@
xds->we_own_buffer = XDS_TRUE;
}
- /* Ensure the buffer has free space. */
-
- assert(xds->buffer_len <= xds->buffer_capacity);
- if (xds->buffer_len == xds->buffer_capacity)
- {
- if (xds->we_own_buffer)
- {
- rc = xds_set_capacity((void**)&xds->buffer,
- &xds->buffer_capacity,
- xds->buffer_len + 1,
- sizeof(char),
- XDS_INITIAL_BUFFER_CAPACITY);
- assert(rc == XDS_OK || rc == XDS_ERR_NO_MEM);
- if (rc != XDS_OK)
- return rc;
- }
- else
- return XDS_ERR_OVERFLOW;
- }
-
/* Iterate through the items in the format string and execute the
apropriate engines. */
@@ -101,37 +81,28 @@
if (strlen(name) > 0)
{
+ int restart_engine;
+ size_t used_buffer_size;
size_t pos;
- if (xds_find_engine(xds->engines, xds->engines_len, name, &pos))
+
+ if (xds_find_engine(xds->engines, xds->engines_len, name, &pos) == XDS_FALSE)
{
- int restart_engine;
- size_t used_buffer_size;
- do
- {
- args_backup = args;
- 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);
- 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 */
- if (!xds->we_own_buffer)
- goto leave;
+ rc = XDS_ERR_UNKNOWN_ENGINE;
+ goto leave;
+ }
- restart_engine = XDS_TRUE;
- args = args_backup;
+ do
+ {
+ /* Ensure the buffer has free space. */
+ assert(xds->buffer_len <= xds->buffer_capacity);
+ if (xds->buffer_len == xds->buffer_capacity)
+ {
+ if (xds->we_own_buffer)
+ {
rc = xds_set_capacity((void**)&xds->buffer,
&xds->buffer_capacity,
- xds->buffer_capacity + 1,
+ xds->buffer_len + 1,
sizeof(char),
XDS_INITIAL_BUFFER_CAPACITY);
assert(rc == XDS_OK || rc == XDS_ERR_NO_MEM);
@@ -139,15 +110,48 @@
goto leave;
}
else
+ {
+ rc = XDS_ERR_OVERFLOW;
goto leave;
+ }
}
- while (restart_engine);
- }
- else
- {
- rc = XDS_ERR_UNKNOWN_ENGINE;
- goto leave;
+
+ /* Execute the engine. */
+
+ args_backup = args;
+ 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);
+ 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 */
+ if (!xds->we_own_buffer)
+ goto leave;
+
+ 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
+ goto leave;
}
+ while (restart_engine);
}
}
rc = XDS_OK;
|