Added exception handling wrapper to a number of server requests.
Changed a few requests to use the new vararg mechanism.
diff --git a/server/object.c b/server/object.c
index cda7bfe..f2a7f1f 100644
--- a/server/object.c
+++ b/server/object.c
@@ -70,6 +70,7 @@
static int get_name_hash( const WCHAR *name, size_t len )
{
WCHAR hash = 0;
+ len /= sizeof(WCHAR);
while (len--) hash ^= *name++;
return hash % NAME_HASH_SIZE;
}
@@ -79,11 +80,10 @@
{
struct object_name *ptr;
- if ((ptr = mem_alloc( sizeof(*ptr) + len * sizeof(ptr->name[0]) )))
+ if ((ptr = mem_alloc( sizeof(*ptr) + len - sizeof(ptr->name) )))
{
ptr->len = len;
- memcpy( ptr->name, name, len * sizeof(ptr->name[0]) );
- ptr->name[len] = 0;
+ memcpy( ptr->name, name, len );
}
return ptr;
}
@@ -186,7 +186,7 @@
else
{
fprintf( stderr, "name=L\"" );
- dump_strW( obj->name->name, strlenW(obj->name->name), stderr, "\"\"" );
+ dump_strW( obj->name->name, obj->name->len/sizeof(WCHAR), stderr, "\"\"" );
fputc( '\"', stderr );
}
}
@@ -228,11 +228,12 @@
struct object *find_object( const WCHAR *name, size_t len )
{
struct object_name *ptr;
+
if (!name || !len) return NULL;
for (ptr = names[ get_name_hash( name, len ) ]; ptr; ptr = ptr->next)
{
if (ptr->len != len) continue;
- if (!memcmp( ptr->name, name, len*sizeof(WCHAR) )) return grab_object( ptr->obj );
+ if (!memcmp( ptr->name, name, len )) return grab_object( ptr->obj );
}
return NULL;
}