diff --git a/NEWS b/NEWS index 2e6404d8..5149b77f 100644 --- a/NEWS +++ b/NEWS @@ -69,7 +69,7 @@ rsync changes since last release broken. (Dave Dykstra) * Prevent infinite recursion in cleanup code under certain circumstances. - (Sviatoslav Sviridov) + (Sviatoslav Sviridov and Marc Espie) * Fixed a bug that prevented rsync from creating intervening directories when --relative-paths/-R is set. (Craig Barratt) diff --git a/cleanup.c b/cleanup.c index b9e9dabe..8543217d 100644 --- a/cleanup.c +++ b/cleanup.c @@ -63,11 +63,11 @@ void _exit_cleanup(int code, const char *file, int line) extern int log_got_error; static int inside_cleanup = 0; - if (inside_cleanup != 0) { + if (inside_cleanup > 10) { /* prevent the occasional infinite recursion */ return; } - inside_cleanup = 1; + inside_cleanup++; signal(SIGUSR1, SIG_IGN); signal(SIGUSR2, SIG_IGN);