The patch works when the unicode contains only ascii, but crashes with
the following input:
>>> def f(hehe): return 42
...
>>> f(**{u'hehe': 1})
42
>>> f(**{u'héhé': 1})
Segmentation fault
The two PyString_AsString(keyword) calls are now wrong and should be
changed.

Sorry, but _PyUnicode_AsDefaultEncodedString returns either a borrowed reference (if
errors==NULL) or a new reference (if errors!=NULL).
In either case it's wrong to DECREF the string when you simply take the buffer's
address:
>>> f(**{u'someLongString':2})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() got an unexpected keyword argument 'ÛÛÛÛÛÛÛgString'