summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxhe <xw897002528@gmail.com>2018-12-16 18:46:46 +0800
committerrofl0r <retnyg@gmx.net>2019-01-16 02:38:18 +0000
commit225a2dc144174d14f9f653cb95d99207d1267352 (patch)
tree4b9bcf8dbcca38412db72831097acfcaf8357413
parentf65b4e0161fe87bd6ddcb9c633c7b7bf52584c0a (diff)
downloadgettext-tiny-225a2dc144174d14f9f653cb95d99207d1267352.tar.gz
poparser: set correct length after parsing codecs
retval of iconv is not length, we need to calc that length by pointers.
-rw-r--r--src/poparser.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/poparser.c b/src/poparser.c
index 874e835..190a8f2 100644
--- a/src/poparser.c
+++ b/src/poparser.c
@@ -162,12 +162,13 @@ enum po_error poparser_feed_line(struct po_parser *p, char* in, size_t in_len) {
line_len = len + 1;
x = p->buf;
len = p->bufsize;
- if ( (len = iconv(p->cd, &line, &line_len, &x, &len)) == (size_t)-1)
+ if (iconv(p->cd, &line, &line_len, &x, &len) == (size_t)-1)
return -po_failed_iconv;
if (line_len != 0)
return -po_failed_iconv;
+ len = x - p->buf;
x = p->buf;
}
@@ -225,12 +226,14 @@ enum po_error poparser_feed_line(struct po_parser *p, char* in, size_t in_len) {
line_len = len + 1;
x = p->buf;
len = p->bufsize;
- if ( (len = iconv(p->cd, &line, &line_len, &x, &len)) == (size_t)-1)
+
+ if (iconv(p->cd, &line, &line_len, &x, &len) == (size_t)-1)
return -po_failed_iconv;
if (line_len != 0)
return -po_failed_iconv;
+ len = x - p->buf;
x = p->buf;
}