aboutsummaryrefslogtreecommitdiffstats
path: root/channels/sig_analog.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/sig_analog.c')
-rw-r--r--channels/sig_analog.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/channels/sig_analog.c b/channels/sig_analog.c
index 3488c7f55..49b9c6bd5 100644
--- a/channels/sig_analog.c
+++ b/channels/sig_analog.c
@@ -289,9 +289,13 @@ static void analog_swap_subs(struct analog_pvt *p, enum analog_sub a, enum analo
static int analog_alloc_sub(struct analog_pvt *p, enum analog_sub x)
{
- p->subs[x].allocd = 1;
- if (p->calls->allocate_sub)
- return p->calls->allocate_sub(p->chan_pvt, x);
+ if (p->calls->allocate_sub) {
+ int res;
+ res = p->calls->allocate_sub(p->chan_pvt, x);
+ if (!res)
+ p->subs[x].allocd = 1;
+ return res;
+ }
return 0;
}