]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - windows/winctrls.c
Giant const-correctness patch of doom!
[PuTTY.git] / windows / winctrls.c
index fa79e6498f16ceaa92486c9eaf21409fde1d7912..ea1cc1825eb6e8adb88ec44b25b876329efde8f6 100644 (file)
@@ -448,6 +448,8 @@ char *staticwrap(struct ctlpos *cp, HWND hwnd, char *text, int *lines)
 
     if (lines) *lines = nlines;
 
+    sfree(pwidths);
+
     return ret;
 }
 
@@ -1665,7 +1667,9 @@ void winctrl_layout(struct dlgparam *dp, struct winctrls *wc,
            winctrl_add_shortcuts(dp, c);
            if (actual_base_id == base_id)
                base_id += num_ids;
-       }
+       } else {
+            sfree(data);
+        }
 
        if (colstart >= 0) {
            /*
@@ -2098,26 +2102,12 @@ void dlg_editbox_set(union control *ctrl, void *dlg, char const *text)
     SetDlgItemText(dp->hwnd, c->base_id+1, text);
 }
 
-static char *getdlgitemtext_alloc(HWND hwnd, int id)
-{
-    char *ret = NULL;
-    int size = 0;
-
-    do {
-       size = size * 4 / 3 + 512;
-       ret = sresize(ret, size, char);
-       GetDlgItemText(hwnd, id, ret, size);
-    } while (!memchr(ret, '\0', size-1));
-
-    return ret;
-}
-
 char *dlg_editbox_get(union control *ctrl, void *dlg)
 {
     struct dlgparam *dp = (struct dlgparam *)dlg;
     struct winctrl *c = dlg_findbyctrl(dp, ctrl);
     assert(c && c->ctrl->generic.type == CTRL_EDITBOX);
-    return getdlgitemtext_alloc(dp->hwnd, c->base_id+1);
+    return GetDlgItemText_alloc(dp->hwnd, c->base_id+1);
 }
 
 /* The `listbox' functions can also apply to combo boxes. */
@@ -2312,7 +2302,7 @@ Filename *dlg_filesel_get(union control *ctrl, void *dlg)
     char *tmp;
     Filename *ret;
     assert(c && c->ctrl->generic.type == CTRL_FILESELECT);
-    tmp = getdlgitemtext_alloc(dp->hwnd, c->base_id+1);
+    tmp = GetDlgItemText_alloc(dp->hwnd, c->base_id+1);
     ret = filename_from_str(tmp);
     sfree(tmp);
     return ret;
@@ -2380,6 +2370,8 @@ void dlg_set_focus(union control *ctrl, void *dlg)
     struct winctrl *c = dlg_findbyctrl(dp, ctrl);
     int id;
     HWND ctl;
+    if (!c)
+        return;
     switch (ctrl->generic.type) {
       case CTRL_EDITBOX: id = c->base_id + 1; break;
       case CTRL_RADIO:
@@ -2414,7 +2406,7 @@ void dlg_beep(void *dlg)
     MessageBeep(0);
 }
 
-void dlg_error_msg(void *dlg, char *msg)
+void dlg_error_msg(void *dlg, const char *msg)
 {
     struct dlgparam *dp = (struct dlgparam *)dlg;
     MessageBox(dp->hwnd, msg,
@@ -2540,23 +2532,6 @@ void dlg_set_fixed_pitch_flag(void *dlg, int flag)
     dp->fixed_pitch_fonts = flag;
 }
 
-struct perctrl_privdata {
-    union control *ctrl;
-    void *data;
-    int needs_free;
-};
-
-static int perctrl_privdata_cmp(void *av, void *bv)
-{
-    struct perctrl_privdata *a = (struct perctrl_privdata *)av;
-    struct perctrl_privdata *b = (struct perctrl_privdata *)bv;
-    if (a->ctrl < b->ctrl)
-       return -1;
-    else if (a->ctrl > b->ctrl)
-       return +1;
-    return 0;
-}
-
 void dp_init(struct dlgparam *dp)
 {
     dp->nctrltrees = 0;
@@ -2566,7 +2541,6 @@ void dp_init(struct dlgparam *dp)
     memset(dp->shortcuts, 0, sizeof(dp->shortcuts));
     dp->hwnd = NULL;
     dp->wintitle = dp->errtitle = NULL;
-    dp->privdata = newtree234(perctrl_privdata_cmp);
     dp->fixed_pitch_fonts = TRUE;
 }
 
@@ -2578,67 +2552,6 @@ void dp_add_tree(struct dlgparam *dp, struct winctrls *wc)
 
 void dp_cleanup(struct dlgparam *dp)
 {
-    struct perctrl_privdata *p;
-
-    if (dp->privdata) {
-       while ( (p = index234(dp->privdata, 0)) != NULL ) {
-           del234(dp->privdata, p);
-           if (p->needs_free)
-               sfree(p->data);
-           sfree(p);
-       }
-       freetree234(dp->privdata);
-       dp->privdata = NULL;
-    }
     sfree(dp->wintitle);
     sfree(dp->errtitle);
 }
-
-void *dlg_get_privdata(union control *ctrl, void *dlg)
-{
-    struct dlgparam *dp = (struct dlgparam *)dlg;
-    struct perctrl_privdata tmp, *p;
-    tmp.ctrl = ctrl;
-    p = find234(dp->privdata, &tmp, NULL);
-    if (p)
-       return p->data;
-    else
-       return NULL;
-}
-
-void dlg_set_privdata(union control *ctrl, void *dlg, void *ptr)
-{
-    struct dlgparam *dp = (struct dlgparam *)dlg;
-    struct perctrl_privdata tmp, *p;
-    tmp.ctrl = ctrl;
-    p = find234(dp->privdata, &tmp, NULL);
-    if (!p) {
-       p = snew(struct perctrl_privdata);
-       p->ctrl = ctrl;
-       p->needs_free = FALSE;
-       add234(dp->privdata, p);
-    }
-    p->data = ptr;
-}
-
-void *dlg_alloc_privdata(union control *ctrl, void *dlg, size_t size)
-{
-    struct dlgparam *dp = (struct dlgparam *)dlg;
-    struct perctrl_privdata tmp, *p;
-    tmp.ctrl = ctrl;
-    p = find234(dp->privdata, &tmp, NULL);
-    if (!p) {
-       p = snew(struct perctrl_privdata);
-       p->ctrl = ctrl;
-       p->needs_free = FALSE;
-       add234(dp->privdata, p);
-    }
-    assert(!p->needs_free);
-    p->needs_free = TRUE;
-    /*
-     * This is an internal allocation routine, so it's allowed to
-     * use smalloc directly.
-     */
-    p->data = smalloc(size);
-    return p->data;
-}