summaryrefslogtreecommitdiff
path: root/src/fns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/fns.c b/src/fns.c
index e46159fd63c..fce3d728a3a 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -3377,7 +3377,7 @@ base64_encode_1 (from, to, length, line_break, multibyte)
{
int counter = 0, i = 0;
char *e = to;
- unsigned char c;
+ int c;
unsigned int value;
int bytes;
@@ -3386,9 +3386,9 @@ base64_encode_1 (from, to, length, line_break, multibyte)
if (multibyte)
{
c = STRING_CHAR_AND_LENGTH (from + i, length - i, bytes);
- if (!SINGLE_BYTE_CHAR_P (c))
+ if (bytes > 1)
return -1;
- i += bytes;
+ i++;
}
else
c = from[i++];
@@ -3424,7 +3424,9 @@ base64_encode_1 (from, to, length, line_break, multibyte)
if (multibyte)
{
c = STRING_CHAR_AND_LENGTH (from + i, length - i, bytes);
- i += bytes;
+ if (bytes > 1)
+ return -1;
+ i++;
}
else
c = from[i++];
@@ -3444,7 +3446,9 @@ base64_encode_1 (from, to, length, line_break, multibyte)
if (multibyte)
{
c = STRING_CHAR_AND_LENGTH (from + i, length - i, bytes);
- i += bytes;
+ if (bytes > 1)
+ return -1;
+ i++;
}
else
c = from[i++];