Skip to content

Commit 5a04fcb

Browse files
committed
better dispose for TestKeyDeletedInRegistryView
1 parent 1d2cdb2 commit 5a04fcb

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

FlashpointSecurePlayer/RegistryStates.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -496,37 +496,34 @@ private string TestKeyDeletedInRegistryView(string keyName, RegistryView registr
496496
return keyNames.First();
497497
}
498498

499-
try {
500-
RegistryKey registrySubKey = null;
501-
int subKeyNamesCount = keyNames.Count - 1;
499+
List<RegistryKey> registryKeys = new List<RegistryKey>() { registryKey };
502500

503-
for (int i = 0; i < subKeyNamesCount; i++) {
504-
keyName = keyNames[i + 1];
505-
501+
try {
502+
for (int i = 1; i < keyNames.Count; i++) {
506503
try {
507-
registrySubKey = registryKey.OpenSubKey(keyName);
504+
registryKey = registryKey.OpenSubKey(keyNames[i]);
508505
} catch (SecurityException) {
509506
throw;
510507
} catch (UnauthorizedAccessException) {
511508
throw;
512509
} catch {
513510
// sub key doesn't exist
514-
registrySubKey = null;
511+
registryKey = null;
515512
}
516513

517-
registryKey.Dispose();
518-
registryKey = registrySubKey;
519-
520514
if (registryKey == null) {
521-
return String.Join("\\", keyNames.Take(i + 2).ToArray());
515+
return String.Join("\\", keyNames.Take(i + 1).ToArray());
522516
}
517+
518+
registryKeys[i] = registryKey;
523519
}
524520
return String.Empty;
525521
} finally {
526-
if (registryKey != null) {
527-
registryKey.Dispose();
528-
registryKey = null;
522+
for (int i = 0; i < registryKeys.Count; i++) {
523+
registryKeys[i].Dispose();
529524
}
525+
526+
registryKeys = null;
530527
}
531528
}
532529

0 commit comments

Comments
 (0)