]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/sndfile-util.c
sndfile-util: Check return value of sf_command for errors
[pulseaudio] / src / pulsecore / sndfile-util.c
index ab6485d90eb5486ce1084d73766685a69760fd3d..fe2048641393968242f17f629dc6de3ddfa0d383 100644 (file)
 
 int pa_sndfile_read_sample_spec(SNDFILE *sf, pa_sample_spec *ss) {
     SF_INFO sfi;
+    int sf_errno;
 
     pa_assert(sf);
     pa_assert(ss);
 
     pa_zero(sfi);
-    pa_assert_se(sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)) == 0);
+    if ((sf_errno = sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)))) {
+        pa_log_error("sndfile: %s", sf_error_number(sf_errno));
+        return -1;
+    }
 
     switch (sfi.format & SF_FORMAT_SUBMASK) {
 
@@ -151,7 +155,7 @@ int pa_sndfile_read_channel_map(SNDFILE *sf, pa_channel_map *cm) {
 
     static const pa_channel_position_t table[] = {
         [SF_CHANNEL_MAP_MONO] =                  PA_CHANNEL_POSITION_MONO,
-        [SF_CHANNEL_MAP_LEFT] =                  PA_CHANNEL_POSITION_FRONT_LEFT, /* libsndfile distuingishes left und front-left, which we don't */
+        [SF_CHANNEL_MAP_LEFT] =                  PA_CHANNEL_POSITION_FRONT_LEFT, /* libsndfile distinguishes left and front-left, which we don't */
         [SF_CHANNEL_MAP_RIGHT] =                 PA_CHANNEL_POSITION_FRONT_RIGHT,
         [SF_CHANNEL_MAP_CENTER] =                PA_CHANNEL_POSITION_FRONT_CENTER,
         [SF_CHANNEL_MAP_FRONT_LEFT] =            PA_CHANNEL_POSITION_FRONT_LEFT,
@@ -175,6 +179,7 @@ int pa_sndfile_read_channel_map(SNDFILE *sf, pa_channel_map *cm) {
     };
 
     SF_INFO sfi;
+    int sf_errno;
     int *channels;
     unsigned c;
 
@@ -182,12 +187,13 @@ int pa_sndfile_read_channel_map(SNDFILE *sf, pa_channel_map *cm) {
     pa_assert(cm);
 
     pa_zero(sfi);
-    pa_assert_se(sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)) == 0);
+    if ((sf_errno = sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)))) {
+        pa_log_error("sndfile: %s", sf_error_number(sf_errno));
+        return -1;
+    }
 
     channels = pa_xnew(int, sfi.channels);
-    if (!sf_command(sf, SFC_GET_CHANNEL_MAP_INFO,
-                    channels, sizeof(channels[0]) * sfi.channels)) {
-
+    if (!sf_command(sf, SFC_GET_CHANNEL_MAP_INFO, channels, sizeof(channels[0]) * sfi.channels)) {
         pa_xfree(channels);
         return -1;
     }
@@ -325,6 +331,7 @@ void pa_sndfile_init_proplist(SNDFILE *sf, pa_proplist *p) {
 
     SF_INFO sfi;
     SF_FORMAT_INFO fi;
+    int sf_errno;
     unsigned c;
 
     pa_assert(sf);
@@ -346,7 +353,10 @@ void pa_sndfile_init_proplist(SNDFILE *sf, pa_proplist *p) {
     }
 
     pa_zero(sfi);
-    pa_assert_se(sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)) == 0);
+    if ((sf_errno = sf_command(sf, SFC_GET_CURRENT_SF_INFO, &sfi, sizeof(sfi)))) {
+        pa_log_error("sndfile: %s", sf_error_number(sf_errno));
+        return;
+    }
 
     pa_zero(fi);
     fi.format = sfi.format;