summaryrefslogtreecommitdiff
path: root/nuttx/sched/sched_releasetcb.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/sched/sched_releasetcb.c')
-rw-r--r--nuttx/sched/sched_releasetcb.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/nuttx/sched/sched_releasetcb.c b/nuttx/sched/sched_releasetcb.c
index 567db2021..cd8e9c8c3 100644
--- a/nuttx/sched/sched_releasetcb.c
+++ b/nuttx/sched/sched_releasetcb.c
@@ -138,9 +138,16 @@ int sched_releasetcb(FAR _TCB *tcb)
/* Delete the tasks's allocated DSpace region (external modules only) */
#ifdef CONFIG_PIC
- if (tcb->picbase)
+ if (tcb->dspace)
{
- sched_free(tcb->picbase);
+ if (tcb->dspace->crefs <= 1)
+ {
+ sched_free(tcb->dspace);
+ }
+ else
+ {
+ tcb->dspace->crefs--;
+ }
}
#endif