|
a/src/utils/transcode.cpp |
|
b/src/utils/transcode.cpp |
|
... |
|
... |
114 |
out += "?";
|
114 |
out += "?";
|
115 |
mecnt++;
|
115 |
mecnt++;
|
116 |
ip++;isiz--;
|
116 |
ip++;isiz--;
|
117 |
continue;
|
117 |
continue;
|
118 |
}
|
118 |
}
|
|
|
119 |
// Normally only EINVAL is possible here: incomplete
|
|
|
120 |
// multibyte sequence at the end. This is not fatal. Any
|
|
|
121 |
// other is supposedly impossible, we return an error
|
|
|
122 |
if (errno == EINVAL)
|
|
|
123 |
goto out;
|
|
|
124 |
else
|
119 |
goto error;
|
125 |
goto error;
|
120 |
}
|
126 |
}
|
121 |
|
127 |
|
122 |
out.append(obuf, OBSIZ - osiz);
|
128 |
out.append(obuf, OBSIZ - osiz);
|
123 |
}
|
129 |
}
|
124 |
|
130 |
|
|
... |
|
... |
129 |
out = string("iconv_close failed for ") + icode + " -> " + ocode;
|
135 |
out = string("iconv_close failed for ") + icode + " -> " + ocode;
|
130 |
goto error;
|
136 |
goto error;
|
131 |
}
|
137 |
}
|
132 |
#endif
|
138 |
#endif
|
133 |
|
139 |
|
|
|
140 |
out:
|
134 |
ret = true;
|
141 |
ret = true;
|
135 |
|
142 |
|
136 |
error:
|
143 |
error:
|
|
|
144 |
|
137 |
if (icopen) {
|
145 |
if (icopen) {
|
138 |
#ifndef ICONV_CACHE_OPEN
|
146 |
#ifndef ICONV_CACHE_OPEN
|
139 |
iconv_close(ic);
|
147 |
iconv_close(ic);
|
140 |
#else
|
148 |
#else
|
141 |
// Just reset conversion
|
149 |
// Just reset conversion
|