Преглед на файлове

Protect tags when they are notified of the termination of one of their deps.

Cédric Augonnet преди 16 години
родител
ревизия
71646ef288
променени са 1 файла, в които са добавени 9 реда и са изтрити 1 реда
  1. 9 1
      src/core/dependencies/tags.c

+ 9 - 1
src/core/dependencies/tags.c

@@ -227,7 +227,15 @@ void notify_dependencies(struct job_s *j)
 
 		for (succ = 0; succ < nsuccs; succ++)
 		{
-			notify_cg(tag->succ[succ]);
+			struct _cg_t *cg = tag->succ[succ];
+
+			if (!cg->used_by_apps)
+				take_mutex(&cg->tag->lock);
+
+			notify_cg(cg);
+
+			if (!cg->used_by_apps)
+				release_mutex(&cg->tag->lock);
 		}
 
 		release_mutex(&tag->lock);