|
|
@@ -735,7 +735,8 @@ archive_string_append_from_wcs_in_codepage(struct archive_string *as,
|
|
|
else
|
|
|
dp = &defchar_used;
|
|
|
count = WideCharToMultiByte(to_cp, 0, ws, wslen,
|
|
|
- as->s + as->length, (int)as->buffer_length-1, NULL, dp);
|
|
|
+ as->s + as->length,
|
|
|
+ (int)as->buffer_length - as->length - 1, NULL, dp);
|
|
|
if (count == 0 &&
|
|
|
GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
|
|
|
/* Expand the MBS buffer and retry. */
|
|
|
@@ -1512,8 +1513,10 @@ get_current_codepage(void)
|
|
|
p = strrchr(locale, '.');
|
|
|
if (p == NULL)
|
|
|
return (GetACP());
|
|
|
+ if (strcmp(p+1, "utf8") == 0)
|
|
|
+ return CP_UTF8;
|
|
|
cp = my_atoi(p+1);
|
|
|
- if (cp <= 0)
|
|
|
+ if ((int)cp <= 0)
|
|
|
return (GetACP());
|
|
|
return (cp);
|
|
|
}
|