From 6a429c8a8637f2b8ddb5afaf7f2ece092fdef912 Mon Sep 17 00:00:00 2001 From: chris west Date: Mon, 27 Jan 2020 19:07:43 -0800 Subject: [PATCH] count chars, not bytes --- README.md | 3 +-- src/menu.rs | 6 +++--- src/text.rs | 5 +++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5dc6627..4a9219e 100644 --- a/README.md +++ b/README.md @@ -111,12 +111,11 @@ To enable just TLS support, or just Tor support, use `--features`: ## todo -- [ ] don't create new strings for every Line - [ ] catch SIGWINCH -- [ ] disable ctrl-c outside of raw mode (telnet) ## bugs +- [ ] ctrl-c while telneting kills phetch - [ ] unknown keypress: [ during status messages - [ ] new status doesn't replace old (download complete -> copy url) diff --git a/src/menu.rs b/src/menu.rs index 6aa93ac..85a59eb 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -75,7 +75,7 @@ impl Line { /// Returns the text field of this line, given a raw Gopher response. /// The same Line must always be used with the same Gopher response. pub fn text<'a>(&self, raw: &'a str) -> &'a str { - if raw.len() >= self.text_end && self.start < self.text_end { + if self.start < self.text_end { &raw[self.start + 1..self.text_end] } else { "" @@ -820,7 +820,7 @@ impl Menu { let s = self .input .chars() - .take(self.input.len()) + .take(self.input.chars().count()) .collect::(); if let Ok(num) = s.parse::() { if num > 0 && num <= self.links.len() { @@ -896,7 +896,7 @@ pub fn parse_line(start: usize, raw: &str) -> Option { } let line = &raw[start..]; - let end = line.find('\n').unwrap_or_else(|| line.len()) + start; + let end = line.find('\n').unwrap_or_else(|| line.chars().count()) + start; let line = &raw[start..end]; // constrain \t search let text_end = if let Some(i) = line.find('\t') { i + start diff --git a/src/text.rs b/src/text.rs index 84b4df9..ece446e 100644 --- a/src/text.rs +++ b/src/text.rs @@ -166,8 +166,9 @@ impl Text { let mut longest = 0; for line in response.split_terminator('\n') { lines += 1; - if line.len() > longest { - longest = line.len(); + let count = line.chars().count(); + if count > longest { + longest = count; } }