summaryrefslogtreecommitdiff
blob: 5e67e5d31555d8ccb959ab869476e48a02c917f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 0cb919b446eeda41aea8578ae26796ae92a973e5 Mon Sep 17 00:00:00 2001
From: George Angelopoulos <george@usermod.net>
Date: Mon, 2 Jul 2018 17:55:38 +0200
Subject: [PATCH] fix addch ERR crash when starting with no torrents

There was a bug introduced by commit e06d08d:
    scale_bytes: Simplify this function

tremc would crash when started against a transmission-daemon with no
torrents.

This was because scale_bytes(0) used to return 0K but now it returns
0.0K. The expected width of 2 was hardcoded. The new width of 4 causes
addch() to return ERR because it tries to draw outside the window.

Hardcoding the new width to 4 would resolve this issue. Instead,
this patch dynamically sets the width returned by scale_bytes().
This should make the code a tiny bit more readable and maybe avoid this
issue in the future.

There is one more magic number involved here which I don't see a good
way of getting rid of. So I made an illustrative comment.

Resolves #15
---
 tremc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tremc b/tremc
index 36ae67b..ed898fb 100755
--- a/tremc
+++ b/tremc
@@ -883,7 +883,7 @@ class Interface(object):
         self.focus        = -1  # -1: nothing focused; 0: top of list; <# of torrents>-1: bottom of list
         self.scrollpos    = 0   # start of torrentlist
         self.torrents_per_page  = 0 # will be set by manage_layout()
-        self.rateDownload_width = self.rateUpload_width = 2
+        self.rateDownload_width = self.rateUpload_width = len(scale_bytes())
 
         self.details_category_focus = 0  # overview/files/peers/tracker in details
         self.focus_detaillist       = -1 # same as focus but for details
@@ -2667,6 +2667,8 @@ class Interface(object):
                     pass
 
     def draw_global_rates(self):
+        # ↑1.2K ↓3.4M
+        # ^    ^^     => +3
         rates_width = self.rateDownload_width + self.rateUpload_width + 3
 
         if self.stats['alt-speed-enabled']:
@@ -3373,7 +3375,7 @@ def timestamp(timestamp, format="%x %X"):
     return "%s (%s)" % (absolute, relative)
 
 
-def scale_bytes(bytes, type='short'):
+def scale_bytes(bytes=0, type='short'):
     if bytes >= 1099511627776:
         scaled_bytes = round((bytes / 1099511627776.0), 1)
         unit = 'T'
-- 
2.26.0