Added extra debug information to memory_buffer_alloc_status()
diff --git a/library/memory_buffer_alloc.c b/library/memory_buffer_alloc.c
index c7df7b4..e9068ae 100644
--- a/library/memory_buffer_alloc.c
+++ b/library/memory_buffer_alloc.c
@@ -65,6 +65,13 @@
     size_t          largest_free;
     size_t          current_alloc_size;
     int             verify;
+#if defined(POLARSSL_MEMORY_DEBUG)
+    size_t          malloc_count;
+    size_t          free_count;
+    size_t          total_used;
+    size_t          maximum_used;
+    size_t          header_count;
+#endif
 }
 buffer_alloc_ctx;
 
@@ -206,12 +213,21 @@
     if( cur == NULL )
         return( NULL );
 
+#if defined(POLARSSL_MEMORY_DEBUG)
+    heap.malloc_count++;
+#endif
+
     // Found location, split block if > memory_header + 4 room left
     //
     if( cur->size - len < sizeof(memory_header) + POLARSSL_MEMORY_ALIGN_MULTIPLE )
     {
         cur->alloc = 1;
 
+#if defined(POLARSSL_MEMORY_DEBUG)
+        heap.total_used += cur->size;
+        if( heap.total_used > heap.maximum_used)
+            heap.maximum_used = heap.total_used;
+#endif
 #if defined(POLARSSL_MEMORY_BACKTRACE)
         trace_cnt = backtrace( trace_buffer, MAX_BT );
         cur->trace = backtrace_symbols( trace_buffer, trace_cnt );
@@ -245,6 +261,12 @@
     cur->size = len;
     cur->next = new;
 
+#if defined(POLARSSL_MEMORY_DEBUG)
+    heap.header_count++;
+    heap.total_used += cur->size;
+    if( heap.total_used > heap.maximum_used)
+        heap.maximum_used = heap.total_used;
+#endif
 #if defined(POLARSSL_MEMORY_BACKTRACE)
     trace_cnt = backtrace( trace_buffer, MAX_BT );
     cur->trace = backtrace_symbols( trace_buffer, trace_cnt );
@@ -290,10 +312,18 @@
 
     hdr->alloc = 0;
 
+#if defined(POLARSSL_MEMORY_DEBUG)
+    heap.free_count++;
+    heap.total_used -= hdr->size;
+#endif
+
     // Regroup with block before
     //
     if( hdr->prev != NULL && hdr->prev->alloc == 0 )
     {
+#if defined(POLARSSL_MEMORY_DEBUG)
+        heap.header_count--;
+#endif
         hdr->prev->size += sizeof(memory_header) + hdr->size;
         hdr->prev->next = hdr->next;
         old = hdr;
@@ -312,6 +342,9 @@
     //
     if( hdr->next != NULL && hdr->next->alloc == 0 )
     {
+#if defined(POLARSSL_MEMORY_DEBUG)
+        heap.header_count--;
+#endif
         hdr->size += sizeof(memory_header) + hdr->next->size;
         old = hdr->next;
         hdr->next = hdr->next->next;
@@ -342,6 +375,8 @@
 #if defined(POLARSSL_MEMORY_DEBUG)
 void memory_buffer_alloc_status()
 {
+    fprintf(stderr, "Current use: %u blocks / %u bytes, max: %u bytes, malloc / free: %u / %u\n", heap.header_count, heap.total_used, heap.maximum_used, heap.malloc_count, heap.free_count);
+
     if( heap.first->next == NULL )
         fprintf(stderr, "All memory de-allocated in stack buffer\n");
     else