X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgtk2%2Fmain.c;h=239006c9eabff65dd4c65fec359cc3fbaf674acb;hb=07644ebede47751a05615a016800fb0c149d21ba;hp=72e4680af67326c158a565f6e7911935c5ee9495;hpb=419385f3636d3c6f6cb6095346981014f71ba061;p=doldaconnect.git diff --git a/clients/gtk2/main.c b/clients/gtk2/main.c index 72e4680..239006c 100644 --- a/clients/gtk2/main.c +++ b/clients/gtk2/main.c @@ -846,7 +846,15 @@ gint ksupdatecb(gpointer data) } } if(oldnum != numspeeds) - knownspeeds = srealloc(knownspeeds, numspeeds * sizeof(*knownspeeds)); + { + if(numspeeds == 0) + { + free(knownspeeds); + knownspeeds = NULL; + } else { + knownspeeds = srealloc(knownspeeds, numspeeds * sizeof(*knownspeeds)); + } + } gtk_tree_model_foreach(GTK_TREE_MODEL(srchmodel), ksupdaterow, NULL); if(ksqueryseq == -2) { @@ -1192,22 +1200,27 @@ void cb_main_sdmenu_activate(GtkWidget *widget, gpointer data) void cb_main_fnaddr_activate(GtkWidget *widget, gpointer data) { int tag; - char *buf; struct dc_response *resp; + wchar_t **toks; if(dcfd < 0) { msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Not connected to DC server")); return; } - buf = sstrdup(gtk_entry_get_text(GTK_ENTRY(main_fnaddr))); - if(strchr(buf, ':') == NULL) + toks = dc_lexsexpr(icsmbstowcs((char *)gtk_entry_get_text(GTK_ENTRY(main_fnaddr)), "UTF-8", NULL)); + if(*toks == NULL) { - buf = srealloc(buf, strlen(buf) + 5); - strcat(buf, ":411"); + msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Illegal address entered")); + return; } - tag = dc_queuecmd(NULL, NULL, L"cnct", L"dc", L"%%s", buf, NULL); - free(buf); + if(wcschr(toks[0], L':') == NULL) + { + toks[0] = srealloc(toks[0], (wcslen(toks[0]) + 5) * sizeof(wchar_t)); + wcscat(toks[0], L":411"); + } + tag = dc_queuecmd(NULL, NULL, L"cnct", L"dc", L"%%a", toks, NULL); + dc_freewcsarr(toks); if((resp = dc_gettaggedrespsync(tag)) != NULL) { if(resp->code == 502)