Fix SF bug #529273: WeakValueDictionary.setdefault() raised UnboundLocalError since it used the name of a global function as the name of a local. The patch is almost identical to that submitted with the bug report.