diff options
Diffstat (limited to 'src/modules/jack/module-jack-source.c')
| -rw-r--r-- | src/modules/jack/module-jack-source.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/src/modules/jack/module-jack-source.c b/src/modules/jack/module-jack-source.c index 6b128402..8453bd97 100644 --- a/src/modules/jack/module-jack-source.c +++ b/src/modules/jack/module-jack-source.c @@ -289,8 +289,9 @@ int pa__init(pa_module*m) {      ports = jack_get_ports(u->client, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortIsPhysical|JackPortIsOutput);      channels = 0; -    for (p = ports; *p; p++) -        channels++; +    if (ports) +        for (p = ports; *p; p++) +            channels++;      if (!channels)          channels = m->core->default_sample_spec.channels; @@ -376,7 +377,7 @@ int pa__init(pa_module*m) {      if (do_connect) {          for (i = 0, p = ports; i < ss.channels; i++, p++) { -            if (!*p) { +            if (!p || !*p) {                  pa_log("Not enough physical output ports, leaving unconnected.");                  break;              } @@ -393,7 +394,8 @@ int pa__init(pa_module*m) {      pa_source_put(u->source); -    free(ports); +    if (ports) +        jack_free(ports);      pa_modargs_free(ma);      return 0; @@ -402,7 +404,8 @@ fail:      if (ma)          pa_modargs_free(ma); -    free(ports); +    if (ports) +        jack_free(ports);      pa__done(m);  | 
