Correctly fill parent pid, module size and module name in process and
module snapshots. Based on patches by Eric Pouech and Andreas Mohr.

diff --git a/server/snapshot.c b/server/snapshot.c
index f15d433..f78f862 100644
--- a/server/snapshot.c
+++ b/server/snapshot.c
@@ -126,8 +126,16 @@
     ptr = &snapshot->processes[snapshot->process_pos++];
     reply->count    = ptr->count;
     reply->pid      = get_process_id( ptr->process );
+    reply->ppid     = get_process_id( ptr->process->parent );
+    reply->heap     = 0;  /* FIXME */
+    reply->module   = 0;  /* FIXME */
     reply->threads  = ptr->threads;
     reply->priority = ptr->priority;
+    if (ptr->process->exe.filename)
+    {
+        size_t len = min( ptr->process->exe.namelen, get_reply_max_size() );
+        set_reply_data( ptr->process->exe.filename, len );
+    }
     return 1;
 }
 
@@ -173,6 +181,12 @@
     ptr = &snapshot->modules[snapshot->module_pos++];
     reply->pid  = get_process_id( snapshot->process );
     reply->base = ptr->base;
+    reply->size = ptr->size;
+    if (ptr->filename)
+    {
+        size_t len = min( ptr->namelen, get_reply_max_size() );
+        set_reply_data( ptr->filename, len );
+    }
     return 1;
 }
 
@@ -201,7 +215,12 @@
             release_object( snapshot->threads[i].thread );
         free( snapshot->threads );
     }
-    if (snapshot->module_count) free( snapshot->modules );
+    if (snapshot->module_count)
+    {
+        for (i = 0; i < snapshot->module_count; i++)
+            free( snapshot->modules[i].filename );
+        free( snapshot->modules );
+    }
     if (snapshot->process) release_object( snapshot->process );
 }