diff options
author | xhe <xw897002528@gmail.com> | 2018-12-16 18:46:46 +0800 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2019-01-16 02:38:18 +0000 |
commit | 225a2dc144174d14f9f653cb95d99207d1267352 (patch) | |
tree | 4b9bcf8dbcca38412db72831097acfcaf8357413 | |
parent | f65b4e0161fe87bd6ddcb9c633c7b7bf52584c0a (diff) | |
download | gettext-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.c | 7 |
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; } |