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;
 }