diff --git src/scripts.c src/scripts.c
index 16784fc..71efc50 100644
--- src/scripts.c
+++ src/scripts.c
@@ -3231,16 +3231,17 @@ sutil_checksum(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, s
     if (original == NULL)
         return NIL;
 
+    double dtype;
     GChecksumType type = G_CHECKSUM_SHA256;
     if (argc > 1) 
     {
-        type = JSValueToNumber(ctx, argv[1], exc);
-        if (isnan(type)) 
+        dtype = JSValueToNumber(ctx, argv[1], exc);
+        if (isnan(dtype)) 
         {
             ret = NIL;
             goto error_out;
         }
-        type = MIN(MAX(type, G_CHECKSUM_MD5), G_CHECKSUM_SHA256);
+        type = MIN(MAX((GChecksumType)dtype, G_CHECKSUM_MD5), G_CHECKSUM_SHA256);
     }
     checksum = g_compute_checksum_for_data(type, original, -1);
 
@@ -6247,11 +6248,14 @@ gobject_unblock_signal(JSContextRef ctx, JSObjectRef function, JSObjectRef this,
 static JSValueRef 
 gobject_disconnect(JSContextRef ctx, JSObjectRef function, JSObjectRef this, size_t argc, const JSValueRef argv[], JSValueRef* exc) 
 {
-    int id;
-    if (argc > 0 && JSValueIsNumber(ctx, argv[0]) && !isnan(id = JSValueToNumber(ctx, argv[0], exc)))
+    if (argc == 0) {
+        return JSValueMakeBoolean(ctx, false);
+    }
+    double id = JSValueToNumber(ctx, argv[0], exc);
+    if (!isnan(id))
     {
         GObject *o = JSObjectGetPrivate(this);
-        if (o != NULL && g_signal_handler_is_connected(o, id)) 
+        if (o != NULL && g_signal_handler_is_connected(o, (int)id)) 
         {
             sigdata_remove(id, o);
             g_signal_handler_disconnect(o, id);
