lib: fix exit handler when multiple handlers are registered
authorImre Deak <imre.deak@intel.com>
Wed, 22 May 2013 14:40:45 +0000 (17:40 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 22 May 2013 16:18:28 +0000 (18:18 +0200)
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
lib/drmtest.c

index 981ab4b..9fc03a0 100644 (file)
@@ -1065,7 +1065,7 @@ static void call_exit_handlers(int sig)
                return;
        }
 
-       for (i = 0; i < exit_handler_count; i++)
+       for (i = exit_handler_count - 1; i >= 0; i--)
                exit_handler_fn[i](sig);
 }
 
@@ -1111,6 +1111,9 @@ static int drmtest_install_exit_handler(drmtest_exit_handler_t fn)
        exit_handler_fn[exit_handler_count] = fn;
        exit_handler_count++;
 
+       if (exit_handler_count > 1)
+               return 0;
+
        for (i = 0; i < ARRAY_SIZE(handled_signals); i++) {
                if (install_sig_handler(handled_signals[i],
                                        drmtest_sig_handler))