Allocate dc_srv_local in the .data segment rather than on the heap.
[doldaconnect.git] / lib / uilib.c
index 48b3eed..a299395 100644 (file)
@@ -43,6 +43,7 @@
 #include <netdb.h>
 #include <sys/poll.h>
 #include <pwd.h>
+#include <stdint.h>
 #ifdef HAVE_RESOLVER
 #include <arpa/nameser.h>
 #include <resolv.h>
@@ -103,7 +104,8 @@ struct {
     int family;
     int sentcreds;
 } servinfo;
-char *dc_srv_local;
+char dc_srv_local_addr;
+char *dc_srv_local = &dc_srv_local_addr;
 
 static void message(int bits, char *format, ...)
 {
@@ -319,7 +321,6 @@ int dc_init(void)
 {
     if((ichandle = iconv_open("wchar_t", "utf-8")) == (iconv_t)-1)
        return(-1);
-    dc_srv_local = sstrdup("");
     initcmds();
     return(0);
 }
@@ -490,6 +491,7 @@ int dc_queuecmd(int (*callback)(struct dc_response *), void *data, ...)
                        return(-1);
                    }
                } else if(!wcscmp(tpart, L"ls")) {
+                   freepart = 0;
                    part = va_arg(al, wchar_t *);
                } else if(!wcscmp(tpart, L"ll")) {
                    freepart = 1;