]> git.sur5r.net Git - i3/i3/commitdiff
Introduce sstrndup wrapper.
authorMichael Hofmann <mh21@mh21.de>
Wed, 6 May 2015 14:28:29 +0000 (16:28 +0200)
committerMichael Hofmann <mh21@mh21.de>
Wed, 6 May 2015 14:33:15 +0000 (16:33 +0200)
i3bar/src/workspaces.c
include/libi3.h
libi3/resolve_tilde.c
libi3/safewrappers.c

index 773f8f546c6c07de688dd54734eb4dfd8a35877f..961a41f5da7913c4be7558204f546e1bcc91919f 100644 (file)
@@ -106,7 +106,7 @@ static int workspaces_string_cb(void *params_, const unsigned char *val, size_t
 
     if (!strcmp(params->cur_key, "name")) {
         const char *ws_name = (const char *)val;
-        params->workspaces_walk->canonical_name = strndup(ws_name, len);
+        params->workspaces_walk->canonical_name = sstrndup(ws_name, len);
 
         if (config.strip_ws_numbers && params->workspaces_walk->num >= 0) {
             /* Special case: strip off the workspace number */
index a64b3981e88df6bca1e8abc968f313c54bc37e63..3e6f8427d4f8e0f984e5d6c2964cd6413b1ff086 100644 (file)
@@ -127,6 +127,13 @@ void *srealloc(void *ptr, size_t size);
  */
 char *sstrdup(const char *str);
 
+/**
+ * Safe-wrapper around strndup which exits if strndup returns NULL (meaning that
+ * there is no more memory available)
+ *
+ */
+char *sstrndup(const char *str, size_t size);
+
 /**
  * Safe-wrapper around asprintf which exits if it returns -1 (meaning that
  * there is no more memory available)
index 3a56cbea853495a56a6646d3e13a6ecc52fcb167..26cbabe5f1679cd38ff4f7ac88f220cca2fb7c26 100644 (file)
@@ -23,7 +23,7 @@ char *resolve_tilde(const char *path) {
     char *head, *tail, *result;
 
     tail = strchr(path, '/');
-    head = strndup(path, tail ? (size_t)(tail - path) : strlen(path));
+    head = sstrndup(path, tail ? (size_t)(tail - path) : strlen(path));
 
     int res = glob(head, GLOB_TILDE, NULL, &globbuf);
     free(head);
index 74460f37662360f75153048c1c0b0298327b5c74..f5973cab982185f869d0ed6b39eaf0ea80b67235 100644 (file)
@@ -48,6 +48,13 @@ char *sstrdup(const char *str) {
     return result;
 }
 
+char *sstrndup(const char *str, size_t size) {
+    char *result = strndup(str, size);
+    if (result == NULL)
+        err(EXIT_FAILURE, "strndup()");
+    return result;
+}
+
 int sasprintf(char **strp, const char *fmt, ...) {
     va_list args;
     int result;