]> granicus.if.org Git - transmission/commitdiff
add a bit more safety to the message log code
authorMitchell Livingston <livings124@transmissionbt.com>
Sun, 29 Nov 2009 02:17:11 +0000 (02:17 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Sun, 29 Nov 2009 02:17:11 +0000 (02:17 +0000)
macosx/MessageWindowController.m

index 964b44c10d3ca0643a1283226c48e9c8c5eeeb2f..f698ead2361748d0bf232e8f9b36b00f0002727a 100644 (file)
         case TR_MSG_DBG:
             [fLevelButton selectItemAtIndex: LEVEL_DEBUG];
             break;
+        default: //safety
+            [[NSUserDefaults standardUserDefaults] setInteger: TR_MSG_ERR forKey: @"MessageLevel"];
+            [fLevelButton selectItemAtIndex: LEVEL_ERROR];
     }
     
     fMessages = [[NSMutableArray alloc] init];
         
         [fMessageTable reloadData];
         if (shouldScroll)
-            [fMessageTable scrollRowToVisible: [fDisplayedMessages count]-1];
+            [fMessageTable scrollRowToVisible: [fMessageTable numberOfRows]-1];
     }
     
     [fLock unlock];
     if (!fAttributes)
         fAttributes = [[[[column dataCell] attributedStringValue] attributesAtIndex: 0 effectiveRange: NULL] retain];
     
-    const CGFloat count = floorf([[[fDisplayedMessages objectAtIndex: row] objectForKey: @"Message"] sizeWithAttributes: fAttributes].width
-                                / [column width]);
+    NSString * message = [[fDisplayedMessages objectAtIndex: row] objectForKey: @"Message"];
+    const CGFloat count = floorf([message sizeWithAttributes: fAttributes].width / [column width]);
     return [tableView rowHeight] * (count + 1.0);
 }
 
         case LEVEL_DEBUG:
             level = TR_MSG_DBG;
             break;
+        default:
+            NSAssert1(NO, @"Unknown message log level: %d", [fLevelButton indexOfSelectedItem]);
     }
     
     if ([[NSUserDefaults standardUserDefaults] integerForKey: @"MessageLevel"] == level)
     [fDisplayedMessages sortUsingDescriptors: [fMessageTable sortDescriptors]];
     
     [fMessageTable reloadData];
-    [fMessageTable deselectAll: self];
     
     if ([fDisplayedMessages count] > 0)
-        [fMessageTable scrollRowToVisible: [fDisplayedMessages count]-1];
+    {
+        [fMessageTable deselectAll: self];
+        [fMessageTable scrollRowToVisible: [fMessageTable numberOfRows]-1];
+    }
     
     [fLock unlock];
 }
 
 - (NSString *) stringForMessage: (NSDictionary *) message
 {
-    NSString * level;
-    switch ([[message objectForKey: @"Level"] integerValue])
+    NSString * levelString;
+    const NSInteger level = [[message objectForKey: @"Level"] integerValue];
+    switch (level)
     {
         case TR_MSG_ERR:
-            level = NSLocalizedString(@"Error", "Message window -> level");
+            levelString = NSLocalizedString(@"Error", "Message window -> level");
             break;
         case TR_MSG_INF:
-            level = NSLocalizedString(@"Info", "Message window -> level");
+            levelString = NSLocalizedString(@"Info", "Message window -> level");
             break;
         case TR_MSG_DBG:
-            level = NSLocalizedString(@"Debug", "Message window -> level");
+            levelString = NSLocalizedString(@"Debug", "Message window -> level");
             break;
         default:
-            level = @"";
+            NSAssert1(NO, @"Unknown message log level: %d", level);
     }
     
     return [NSString stringWithFormat: @"%@ %@ [%@] %@: %@", [message objectForKey: @"Date"],
-            [message objectForKey: @"File"], level,
+            [message objectForKey: @"File"], levelString,
             [message objectForKey: @"Name"], [message objectForKey: @"Message"], nil];
 }