mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Windows: Fix regression that broke querying registry for default programs
Apparently under python 3 StopIteration no longer stops while loops, instead propagating out of them.
This commit is contained in:
parent
be6ce66ed1
commit
543cd436fa
@ -269,6 +269,8 @@ class Key(object):
|
|||||||
file_time = RegEnumKeyEx(self.hkey, i, name_buf, ctypes.byref(lname_buf))
|
file_time = RegEnumKeyEx(self.hkey, i, name_buf, ctypes.byref(lname_buf))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise RuntimeError('Enumerating keys failed with buffer too small, which should never happen')
|
raise RuntimeError('Enumerating keys failed with buffer too small, which should never happen')
|
||||||
|
except StopIteration:
|
||||||
|
break
|
||||||
if get_last_write_times:
|
if get_last_write_times:
|
||||||
yield name_buf.value[:lname_buf.value], filetime_to_datettime(file_time)
|
yield name_buf.value[:lname_buf.value], filetime_to_datettime(file_time)
|
||||||
else:
|
else:
|
||||||
@ -330,11 +332,16 @@ class Key(object):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
data_buf = (BYTE * ldata_buf.value)()
|
data_buf = (BYTE * ldata_buf.value)()
|
||||||
continue
|
continue
|
||||||
|
except StopIteration:
|
||||||
|
break
|
||||||
data = convert_registry_data(data_buf, ldata_buf.value, vtype.value)
|
data = convert_registry_data(data_buf, ldata_buf.value, vtype.value)
|
||||||
yield name_buf.value[:lname_buf.value], data
|
yield name_buf.value[:lname_buf.value], data
|
||||||
else:
|
else:
|
||||||
RegEnumValue(
|
try:
|
||||||
key, i, name_buf, ctypes.byref(lname_buf), None, None, None, None)
|
RegEnumValue(
|
||||||
|
key, i, name_buf, ctypes.byref(lname_buf), None, None, None, None)
|
||||||
|
except StopIteration:
|
||||||
|
break
|
||||||
yield name_buf.value[:lname_buf.value]
|
yield name_buf.value[:lname_buf.value]
|
||||||
|
|
||||||
i += 1
|
i += 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user