[glib/glib-2-54] Revert "[MacOS] Fallback to CFStringGetCSTring if CFStringGetCStringPtr fails."
- From: John Ralls <jralls src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-54] Revert "[MacOS] Fallback to CFStringGetCSTring if CFStringGetCStringPtr fails."
- Date: Thu, 2 Nov 2017 01:02:18 +0000 (UTC)
commit d74a69826ffc5591a7eeea61ca25f66f48fcf939
Author: John Ralls <jralls ceridwen us>
Date: Wed Nov 1 18:00:49 2017 -0700
Revert "[MacOS] Fallback to CFStringGetCSTring if CFStringGetCStringPtr fails."
This reverts commit d5a9ce69c46a907af8ed3af0020d2a409faa3751.
Partial resolution of bug 789894
gio/gosxappinfo.c | 34 ++--------------------------------
gio/gosxcontenttype.c | 34 ++--------------------------------
2 files changed, 4 insertions(+), 64 deletions(-)
---
diff --git a/gio/gosxappinfo.c b/gio/gosxappinfo.c
index 7c2b402..b24b6ff 100644
--- a/gio/gosxappinfo.c
+++ b/gio/gosxappinfo.c
@@ -175,44 +175,14 @@ static gchar *
create_cstr_from_cfstring (CFStringRef str)
{
const gchar *cstr;
- CFIndex length = CFStringGetLength (str);
- char *buffer = NULL;
if (str == NULL)
return NULL;
cstr = CFStringGetCStringPtr (str, kCFStringEncodingUTF8);
- /* CFStringGetCStringPtr returns "NULL if the internal storage of
- * theString does not allow [a pointer] to be returned efficiently".
- * (Apple's docs don't say what that means). In that case we must
- * use CFStringGetCString as a fallback.
- */
- if (cstr != NULL)
- {
- CFRelease (str);
- return g_strdup (cstr);
- }
-
- buffer = g_malloc0 (length + 1);
- /* Start off with a buffer size sufficient for the most likely case
- * that the CFString is ASCII so the UTF8 representation will be 1
- * byte per code point. Keep trying up to 4 bytes per code point,
- * the max allowed by RFC3629.
- */
- for (int i = 1; i <= 4; ++i)
- {
- if (CFStringGetCString (str, buffer, length, kCFStringEncodingUTF8))
- {
- CFRelease (str);
- return buffer;
- }
- length += length;
- buffer = g_realloc (buffer, length + 1);
- }
-
- g_free (buffer);
CFRelease (str);
- return NULL;
+
+ return g_strdup (cstr);
}
static char *
diff --git a/gio/gosxcontenttype.c b/gio/gosxcontenttype.c
index c046d9e..485f5bf 100644
--- a/gio/gosxcontenttype.c
+++ b/gio/gosxcontenttype.c
@@ -53,44 +53,14 @@ static gchar *
create_cstr_from_cfstring (CFStringRef str)
{
const gchar *cstr;
- CFIndex length = CFStringGetLength (str);
- char *buffer = NULL;
if (str == NULL)
return NULL;
cstr = CFStringGetCStringPtr (str, kCFStringEncodingUTF8);
- /* CFStringGetCStringPtr returns "NULL if the internal storage of
- * theString does not allow [a pointer] to be returned efficiently".
- * (Apple's docs don't say what that means). In that case we must
- * use CFStringGetCString as a fallback.
- */
- if (cstr != NULL)
- {
- CFRelease (str);
- return g_strdup (cstr);
- }
-
- buffer = g_malloc0 (length + 1);
- /* Start off with a buffer size sufficient for the most likely case
- * that the CFString is ASCII so the UTF8 representation will be 1
- * byte per code point. Keep trying up to 4 bytes per code point,
- * the max allowed by RFC3629.
- */
- for (int i = 1; i <= 4; ++i)
- {
- if (CFStringGetCString (str, buffer, length, kCFStringEncodingUTF8))
- {
- CFRelease (str);
- return buffer;
- }
- length += length;
- buffer = g_realloc (buffer, length + 1);
- }
-
- g_free (buffer);
CFRelease (str);
- return NULL;
+
+ return g_strdup (cstr);
}
/*< internal >
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]