Index: trunk/psLib/src/sys/psMemory.c
===================================================================
--- trunk/psLib/src/sys/psMemory.c	(revision 31660)
+++ trunk/psLib/src/sys/psMemory.c	(revision 32174)
@@ -889,5 +889,7 @@
                       psMemBlock ***array,
                       FILE * fd,
-                      bool persistence)
+                      bool persistence,
+		      int maxDisplayedLeaksCount          ///< List at most maxDisplayedLeaksCount (-1 for all)
+		  )
 {
     psS32 nleak = 0;
@@ -915,4 +917,20 @@
     for (memBlock = topBlock; memBlock->nextBlock != NULL; memBlock = memBlock->nextBlock) { }
 
+    int maxToDisplay = maxDisplayedLeaksCount;
+    psMemBlock *memBlockBackup = memBlock;
+    if (maxToDisplay == -1 ) {
+      for (; memBlock != NULL; memBlock = memBlock->previousBlock) {
+	if ( (memBlock->refCounter > 0) &&
+	     ( (persistence) || (!persistence && !memBlock->persistent) ) &&
+	     (memBlock->id >= id0)) {
+	  nleak++;
+	}
+      }
+      maxToDisplay=nleak;
+    }
+    fprintf(stderr,"maxToDisplay: %d\n", maxToDisplay);
+    memBlock = memBlockBackup;
+
+    nleak=0;
     // iterate through the block list starting with the oldest block
     for (; memBlock != NULL; memBlock = memBlock->previousBlock) {
@@ -924,5 +942,5 @@
 
 	    // only print a max of 500 leaks (make this an argument)
-            if ((nleak < 500) && (fd != NULL)) {
+            if ( (nleak <= maxToDisplay) && (fd != NULL) ) {
                 if (nleak == 1) {
                     fprintf(fd, "# func at (file:line)  ID: X  Ref: X\n");
