]> git.sur5r.net Git - i3/i3status/commitdiff
print_volume: don’t return, complete the buffer first
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 19 Mar 2013 18:56:44 +0000 (19:56 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 19 Mar 2013 18:56:44 +0000 (19:56 +0100)
Otherwise, i3bar will display “SPEC VIOLATION” because full_text is
missing in the block.

src/print_volume.c

index 6a87b1e48aa40530c530e67d96f702a150a14e0d..d3a97084554d55c47d391e35f66b44fd591e7828 100644 (file)
@@ -77,30 +77,30 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
 
        if (!found) {
                if ((hdl = calloc(sizeof(struct mixer_hdl), 1)) == NULL)
-                       return;
+                       goto out;
 
                if ((hdl->device = strdup(device)) == NULL) {
                        free(hdl);
-                       return;
+                       goto out;
                }
 
                if ((hdl->mixer = strdup(mixer)) == NULL) {
                        free(hdl->device);
                        free(hdl);
-                       return;
+                       goto out;
                }
 
                hdl->mixer_idx = mixer_idx;
                snd_mixer_selem_id_malloc(&(hdl->sid));
                if (hdl->sid == NULL) {
                        free_hdl(hdl);
-                       return;
+                       goto out;
                }
 
                if ((err = snd_mixer_open(&(hdl->m), 0)) < 0) {
                        fprintf(stderr, "i3status: ALSA: Cannot open mixer: %s\n", snd_strerror(err));
                        free_hdl(hdl);
-                       return;
+                       goto out;
                }
 
                /* Attach this mixer handle to the given device */
@@ -108,7 +108,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
                        fprintf(stderr, "i3status: ALSA: Cannot attach mixer to device: %s\n", snd_strerror(err));
                        snd_mixer_close(hdl->m);
                        free_hdl(hdl);
-                       return;
+                       goto out;
                }
 
                /* Register this mixer */
@@ -116,14 +116,14 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
                        fprintf(stderr, "i3status: ALSA: snd_mixer_selem_register: %s\n", snd_strerror(err));
                        snd_mixer_close(hdl->m);
                        free_hdl(hdl);
-                       return;
+                       goto out;
                }
 
                if ((err = snd_mixer_load(hdl->m)) < 0) {
                        fprintf(stderr, "i3status: ALSA: snd_mixer_load: %s\n", snd_strerror(err));
                        snd_mixer_close(hdl->m);
                        free_hdl(hdl);
-                       return;
+                       goto out;
                }
 
                /* Find the given mixer */
@@ -134,7 +134,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
                                snd_mixer_selem_id_get_name(hdl->sid), snd_mixer_selem_id_get_index(hdl->sid));
                        snd_mixer_close(hdl->m);
                        free_hdl(hdl);
-                       return;
+                       goto out;
                }
 
                /* Get the volume range to convert the volume later */
@@ -215,6 +215,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
         close(mixfd);
 #endif
 
+out:
         *outwalk = '\0';
         OUTPUT_FULL_TEXT(buffer);