The NULL pointer for empty strings turns out to be a pain.
At least for the buffer API, return "" in that case.
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index a07f9e7..2cdaf37 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -950,7 +950,10 @@
                         "accessing non-existent bytes segment");
         return -1;
     }
-    *ptr = (void *)self->ob_bytes;
+    if (self->ob_bytes == NULL)
+        *ptr = "";
+    else
+        *ptr = self->ob_bytes;
     return self->ob_size;
 }