+/* siefca@pld.org.pl */
+static char *parse_string (const char *source, struct var_data *vdt)
+{
++struct var_data *vdp = NULL;
+char *output_buf = NULL,
+ *pass_buf = NULL;
+size_t buf_size = 2;
+ return NULL;
+ }
+
++ /* zero var_data length cache - important! */
++ for (vdp=vdt; vdp->name; vdp++)
++ vdp->value_length = 0;
++
+ /* phase 1 - count and validate string */
+ if ( (parse_core (source, vdt, &ParsePlugin_counter, &buf_size)) != 0)
+ return NULL;
+ /* phase 2 - allocate memory */
+ output_buf = malloc (buf_size);
+ if (!output_buf)
-+ {
-+ perror ("malloc");
-+ return NULL;
-+ }
++ { perror ("malloc"); return NULL; }
++
+ pass_buf = output_buf;
+
+ /* phase 3 - build the output string */
+ if ( (parse_core (source, vdt, &ParsePlugin_builder, &pass_buf)) != 0)
-+ {
-+ free (output_buf);
-+ return NULL;
-+ }
-+ *pass_buf = '\0';
++ { free (output_buf); return NULL; }
+
++ *pass_buf = '\0';
+ return output_buf;
+}
+