[PATCH 2/4] server: Add function to count only valid handles in a process
Austin Lund
austin.lund at gmail.com
Sun Jun 19 21:15:39 CDT 2011
---
server/handle.c | 11 ++++++++++-
server/handle.h | 1 +
server/process.c | 2 +-
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/server/handle.c b/server/handle.c
index 2aaec37..31ee83c 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -461,7 +461,7 @@ obj_handle_t enumerate_handles( struct process *process, const struct object_ops
for (i = *index, entry = &table->entries[i]; i <= table->last; i++, entry++)
{
if (!entry->ptr) continue;
- if (entry->ptr->ops != ops) continue;
+ if (ops && (entry->ptr->ops != ops)) continue;
*index = i + 1;
return index_to_handle(i);
}
@@ -560,6 +560,15 @@ unsigned int get_handle_table_count( struct process *process )
return process->handles->count;
}
+unsigned int count_valid_handles( struct process *process )
+{
+ unsigned int i, count;
+ i = count = 0;
+ while (enumerate_handles(process, NULL, &i) != 0)
+ count++;
+ return count;
+}
+
/* close a handle */
DECL_HANDLER(close_handle)
{
diff --git a/server/handle.h b/server/handle.h
index 821c4ef..0e76eb1 100644
--- a/server/handle.h
+++ b/server/handle.h
@@ -53,5 +53,6 @@ extern void close_process_handles( struct process *process );
extern struct handle_table *alloc_handle_table( struct process *process, int count );
extern struct handle_table *copy_handle_table( struct process *process, struct process *parent );
extern unsigned int get_handle_table_count( struct process *process);
+extern unsigned int count_valid_handles( struct process *process );
#endif /* __WINE_SERVER_HANDLE_H */
diff --git a/server/process.c b/server/process.c
index c88c89b..540bf7f 100644
--- a/server/process.c
+++ b/server/process.c
@@ -846,7 +846,7 @@ struct process_snapshot *process_snap( int *count )
ptr->threads = process->running_threads;
ptr->count = process->obj.refcount;
ptr->priority = process->priority;
- ptr->handles = get_handle_table_count(process);
+ ptr->handles = count_valid_handles(process);
grab_object( process );
ptr++;
}
--
1.7.4.1
More information about the wine-patches
mailing list