Bug #1089 » 0002-strip_ucs_only_if_size_bigger_equals_two_v2.patch
| src/tags.cpp (working copy) | ||
|---|---|---|
| 2320 | 2320 |
if (value.typeId() == unsignedByte && value.size() > 0) {
|
| 2321 | 2321 |
DataBuf buf(value.size()); |
| 2322 | 2322 |
value.copy(buf.pData_, invalidByteOrder); |
| 2323 |
// Strip trailing UCS-2 0-character, if there is one |
|
| 2324 |
if (buf.pData_[buf.size_ - 1] == 0 && buf.pData_[buf.size_ - 2] == 0) buf.size_ -= 2; |
|
| 2323 |
// Strip trailing odd byte due to failing UCS-2 conversion |
|
| 2324 |
if (buf.size_ % 2 == 1) buf.size_ -=1; |
|
| 2325 |
// Strip trailing UCS-2 0-characters, if there are some |
|
| 2326 |
while (buf.size_ >= 2) {
|
|
| 2327 |
if (buf.pData_[buf.size_ - 1] == 0 && buf.pData_[buf.size_ - 2] == 0) {
|
|
| 2328 |
buf.size_ -= 2; |
|
| 2329 |
} else {
|
|
| 2330 |
break; |
|
| 2331 |
} |
|
| 2332 |
} |
|
| 2325 | 2333 |
std::string str((const char*)buf.pData_, buf.size_); |
| 2326 | 2334 |
cnv = convertStringCharset(str, "UCS-2LE", "UTF-8"); |
| 2327 | 2335 |
if (cnv) os << str; |
- « Previous
- 1
- 2
- Next »