grep: -r didn't close files, producing "Too many open files"
diff --git a/findutils/grep.c b/findutils/grep.c
index 12cad34..04dd2b0 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -301,6 +301,7 @@
 	}
 	cur_file = filename;
 	*(int*)matched += grep_file(file);
+	fclose(file);
 	return 1;
 }
 
@@ -446,13 +447,13 @@
 			}
 		}
 		matched += grep_file(file);
+		bb_fclose_nonstdin(file);
  grep_done:
 		if (matched < 0) {
 			/* we found a match but were told to be quiet, stop here and
 			* return success */
 			break;
 		}
-		bb_fclose_nonstdin(file);
 	}
 
 	/* destroy all the elments in the pattern list */