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

eloop: Signal handler can be reassigned

Serj Kalichev преди 7 месеца
родител
ревизия
8780179d84
променени са 1 файла, в които са добавени 5 реда и са изтрити 2 реда
  1. 5 2
      faux/eloop/eloop.c

+ 5 - 2
faux/eloop/eloop.c

@@ -606,8 +606,11 @@ bool_t faux_eloop_add_signal(faux_eloop_t *eloop, int signo,
 	if (!eloop || (signo < 0))
 		return BOOL_FALSE;
 
-	if (sigismember(&eloop->sig_set, signo) == 1)
-		return BOOL_FALSE; // Already exists
+	if (sigismember(&eloop->sig_set, signo) == 1) { // Already exists
+		// Signal must be reassigned. So remove previous one
+		if (!faux_eloop_del_signal(eloop, signo))
+			return BOOL_FALSE;
+	}
 
 	// Firstly try to add signal to sigset. Library function will validate
 	// signal number value.