summaryrefslogtreecommitdiff
path: root/new
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2015-04-10 13:24:34 -0400
committerPietro Gagliardi <[email protected]>2015-04-10 13:25:09 -0400
commita38024c781524e326e3319c7b9f9f037ee01ba00 (patch)
tree795e510a96dbafa38cc6c5166734ab91af1c3f27 /new
parent5bbaaeefe8b0ced1a2a16c50a2ebc3e4da9c432b (diff)
Eliminated direct use of strdup(); introduced uiDarwinNSStringToText() to do that work for us (and abort on failure).
Diffstat (limited to 'new')
-rw-r--r--new/alloc_darwin.m4
-rw-r--r--new/button_darwin.m2
-rw-r--r--new/checkbox_darwin.m2
-rw-r--r--new/entry_darwin.m3
-rw-r--r--new/text_darwin.m14
-rw-r--r--new/ui_darwin.h3
-rw-r--r--new/window_darwin.m2
7 files changed, 23 insertions, 7 deletions
diff --git a/new/alloc_darwin.m b/new/alloc_darwin.m
index c347e7a..8f539af 100644
--- a/new/alloc_darwin.m
+++ b/new/alloc_darwin.m
@@ -7,7 +7,7 @@ void *uiAlloc(size_t size, const char *type)
void *out;
out = malloc(size);
- if (out != NULL) {
+ if (out == NULL) {
fprintf(stderr, "memory exhausted in uiAlloc() allocating %s\n", type);
abort();
}
@@ -24,7 +24,7 @@ void *uiRealloc(void *p, size_t size, const char *type)
if (p == NULL)
return uiAlloc(size, type);
out = realloc(p, size);
- if (out != NULL) {
+ if (out == NULL) {
fprintf(stderr, "memory exhausted in uiRealloc() reallocating %s\n", type);
abort();
}
diff --git a/new/button_darwin.m b/new/button_darwin.m
index a4191a9..92e2c76 100644
--- a/new/button_darwin.m
+++ b/new/button_darwin.m
@@ -58,7 +58,7 @@ char *uiButtonText(uiControl *c)
uiNSButton *b;
b = (uiNSButton *) uiControlHandle(c);
- return strdup(fromNSString([b title]));
+ return uiDarwinNSStringToText([b title]);
}
void uiButtonSetText(uiControl *c, const char *text)
diff --git a/new/checkbox_darwin.m b/new/checkbox_darwin.m
index a07a4d0..ca52389 100644
--- a/new/checkbox_darwin.m
+++ b/new/checkbox_darwin.m
@@ -57,7 +57,7 @@ char *uiCheckboxText(uiControl *c)
uiCheckboxNSButton *cc;
cc = (uiCheckboxNSButton *) uiControlHandle(c);
- return strdup(fromNSString([cc title]));
+ return uiDarwinNSStringToText([cc title]);
}
void uiCheckboxSetText(uiControl *c, const char *text)
diff --git a/new/entry_darwin.m b/new/entry_darwin.m
index 4a4047a..102168b 100644
--- a/new/entry_darwin.m
+++ b/new/entry_darwin.m
@@ -55,8 +55,7 @@ char *uiEntryText(uiControl *c)
uiNSTextField *t;
t = (uiNSTextField *) uiControlHandle(c);
- // TODO wrap all strdup calls
- return strdup(fromNSString([t stringValue]));
+ return uiDarwinNSStringToText([t stringValue]);
}
void uiEntrySetText(uiControl *c, const char *text)
diff --git a/new/text_darwin.m b/new/text_darwin.m
new file mode 100644
index 0000000..4f36356
--- /dev/null
+++ b/new/text_darwin.m
@@ -0,0 +1,14 @@
+// 10 april 2015
+#import "uipriv_darwin.h"
+
+char *uiDarwinNSStringToText(NSString *s)
+{
+ char *out;
+
+ out = strdup([s UTF8String]);
+ if (out == NULL) {
+ fprintf(stderr, "memory exhausted in uiDarwinNSStringToText()\n");
+ abort();
+ }
+ return out;
+}
diff --git a/new/ui_darwin.h b/new/ui_darwin.h
index 672eb63..153ff51 100644
--- a/new/ui_darwin.h
+++ b/new/ui_darwin.h
@@ -15,6 +15,9 @@ This file assumes that you have imported <Cocoa/Cocoa.h> and "ui.h" beforehand.
extern uiControl *uiDarwinNewControl(Class class, BOOL inScrollView, BOOL scrollViewHasBorder);
extern BOOL uiDarwinControlFreeWhenAppropriate(uiControl *c, NSView *newSuperview);
+// You can use this function from within your control implementations to return text strings that can be freed with uiTextFree().
+extern char *uiDarwinNSStringToText(NSString *);
+
struct uiSizingSys {
// this structure currently left blank
};
diff --git a/new/window_darwin.m b/new/window_darwin.m
index 0530386..690c73a 100644
--- a/new/window_darwin.m
+++ b/new/window_darwin.m
@@ -81,7 +81,7 @@ uintptr_t uiWindowHandle(uiWindow *w)
char *uiWindowTitle(uiWindow *w)
{
- return strdup(fromNSString([D.w title]));
+ return uiDarwinNSStringToText([D.w title]);
}
void uiWindowSetTitle(uiWindow *w, const char *title)