|
|
|
@ -464,7 +464,7 @@ pg_convert(PG_FUNCTION_ARGS) |
|
|
|
|
pg_verify_mbstr_len(src_encoding, src_str, len, false); |
|
|
|
|
|
|
|
|
|
/* perform conversion */ |
|
|
|
|
dest_str = (char *) pg_do_encoding_conversion((unsigned char *) src_str, |
|
|
|
|
dest_str = (char *) pg_do_encoding_conversion((unsigned char *) unconstify(char *, src_str), |
|
|
|
|
len, |
|
|
|
|
src_encoding, |
|
|
|
|
dest_encoding); |
|
|
|
@ -561,7 +561,7 @@ char * |
|
|
|
|
pg_any_to_server(const char *s, int len, int encoding) |
|
|
|
|
{ |
|
|
|
|
if (len <= 0) |
|
|
|
|
return (char *) s; /* empty string is always valid */ |
|
|
|
|
return unconstify(char *, s); /* empty string is always valid */ |
|
|
|
|
|
|
|
|
|
if (encoding == DatabaseEncoding->encoding || |
|
|
|
|
encoding == PG_SQL_ASCII) |
|
|
|
@ -570,7 +570,7 @@ pg_any_to_server(const char *s, int len, int encoding) |
|
|
|
|
* No conversion is needed, but we must still validate the data. |
|
|
|
|
*/ |
|
|
|
|
(void) pg_verify_mbstr(DatabaseEncoding->encoding, s, len, false); |
|
|
|
|
return (char *) s; |
|
|
|
|
return unconstify(char *, s); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (DatabaseEncoding->encoding == PG_SQL_ASCII) |
|
|
|
@ -600,7 +600,7 @@ pg_any_to_server(const char *s, int len, int encoding) |
|
|
|
|
(unsigned char) s[i]))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return (char *) s; |
|
|
|
|
return unconstify(char *, s); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Fast path if we can use cached conversion function */ |
|
|
|
@ -608,7 +608,7 @@ pg_any_to_server(const char *s, int len, int encoding) |
|
|
|
|
return perform_default_encoding_conversion(s, len, true); |
|
|
|
|
|
|
|
|
|
/* General case ... will not work outside transactions */ |
|
|
|
|
return (char *) pg_do_encoding_conversion((unsigned char *) s, |
|
|
|
|
return (char *) pg_do_encoding_conversion((unsigned char *) unconstify(char *, s), |
|
|
|
|
len, |
|
|
|
|
encoding, |
|
|
|
|
DatabaseEncoding->encoding); |
|
|
|
@ -634,17 +634,17 @@ char * |
|
|
|
|
pg_server_to_any(const char *s, int len, int encoding) |
|
|
|
|
{ |
|
|
|
|
if (len <= 0) |
|
|
|
|
return (char *) s; /* empty string is always valid */ |
|
|
|
|
return unconstify(char *, s); /* empty string is always valid */ |
|
|
|
|
|
|
|
|
|
if (encoding == DatabaseEncoding->encoding || |
|
|
|
|
encoding == PG_SQL_ASCII) |
|
|
|
|
return (char *) s; /* assume data is valid */ |
|
|
|
|
return unconstify(char *, s); /* assume data is valid */ |
|
|
|
|
|
|
|
|
|
if (DatabaseEncoding->encoding == PG_SQL_ASCII) |
|
|
|
|
{ |
|
|
|
|
/* No conversion is possible, but we must validate the result */ |
|
|
|
|
(void) pg_verify_mbstr(encoding, s, len, false); |
|
|
|
|
return (char *) s; |
|
|
|
|
return unconstify(char *, s); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Fast path if we can use cached conversion function */ |
|
|
|
@ -652,7 +652,7 @@ pg_server_to_any(const char *s, int len, int encoding) |
|
|
|
|
return perform_default_encoding_conversion(s, len, false); |
|
|
|
|
|
|
|
|
|
/* General case ... will not work outside transactions */ |
|
|
|
|
return (char *) pg_do_encoding_conversion((unsigned char *) s, |
|
|
|
|
return (char *) pg_do_encoding_conversion((unsigned char *) unconstify(char *, s), |
|
|
|
|
len, |
|
|
|
|
DatabaseEncoding->encoding, |
|
|
|
|
encoding); |
|
|
|
@ -687,7 +687,7 @@ perform_default_encoding_conversion(const char *src, int len, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (flinfo == NULL) |
|
|
|
|
return (char *) src; |
|
|
|
|
return unconstify(char *, src); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Allocate space for conversion result, being wary of integer overflow |
|
|
|
|