diff --git a/Objects/classobject.c b/Objects/classobject.c
index 6008999..268cf1a 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -960,14 +960,6 @@
 	instance_hash,		/*tp_hash*/
 };
 
-static object *
-instance_convert(inst, methodname)
-	object *inst;
-	char *methodname;
-{
-	return generic_unary_op((instanceobject *)inst, methodname);
-}
-
 
 /* Instance method objects are used for two purposes:
    (a) as bound instance methods (returned by instancename.methodname)
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 65512be..972560d 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -572,7 +572,7 @@
 {
 	if (mp == NULL || !is_mappingobject(mp)) {
 		err_badcall();
-		return NULL;
+		return 0;
 	}
 	return ((mappingobject *)mp)->ma_used;
 }
@@ -773,7 +773,7 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -791,7 +791,7 @@
 	char *key;
 	object *item;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -808,7 +808,8 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char ||
+	    strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 2953ffa..e9c35d7 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -43,7 +43,9 @@
 #define CHAR_BIT 8
 #endif
 
+#ifndef LONG_BIT
 #define LONG_BIT (CHAR_BIT * sizeof(long))
+#endif
 
 /* Standard Booleans */
 
diff --git a/Objects/mappingobject.c b/Objects/mappingobject.c
index 65512be..972560d 100644
--- a/Objects/mappingobject.c
+++ b/Objects/mappingobject.c
@@ -572,7 +572,7 @@
 {
 	if (mp == NULL || !is_mappingobject(mp)) {
 		err_badcall();
-		return NULL;
+		return 0;
 	}
 	return ((mappingobject *)mp)->ma_used;
 }
@@ -773,7 +773,7 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -791,7 +791,7 @@
 	char *key;
 	object *item;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char || strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
@@ -808,7 +808,8 @@
 	object *v;
 	char *key;
 {
-	if (key != last_name_char) {
+	if (key != last_name_char ||
+	    strcmp(key, getstringvalue(last_name_object)) != 0) {
 		XDECREF(last_name_object);
 		last_name_object = newstringobject(key);
 		if (last_name_object == NULL) {
