Actually the values returned by this function is never used. All the
callers just check if the resultat is non-zero. Before this patch, the
function returns the length of the produced content. This value is not
useful because is returned twice: the first time in the return value and
the second time in the <binstrlen> argument. Now the function returns
the number of bytes consumed from <source>.
* Parse binary string written in hexadecimal (source) and store the decoded
* result into binstr and set binstrlen to the lengh of binstr. Memory for
* binstr is allocated by the function. In case of error, returns 0 with an
- * error message in err.
+ * error message in err. In succes case, it returns the consumed length.
*/
int parse_binary(const char *source, char **binstr, int *binstrlen, char **err)
{
goto bad_input;
(*binstr)[j++] = (hex2i(p[i-2]) << 4) + hex2i(p[i-1]);
}
- return len;
+ return len << 1;
bad_input:
memprintf(err, "an hex digit is expected (found '%c')", p[i-1]);