asottile / babi

a text editor
MIT License
396 stars 46 forks source link

saving over a non-utf-8 file causes a crash #271

Closed asottile closed 1 year ago

asottile commented 1 year ago

I typed hello world, then ^O, then f, then Enter

$ echo $'\x98\xea\xf2' > f
$ babi
Traceback (most recent call last):
  File "/home/asottile/bin/babi", line 8, in <module>
    sys.exit(main())
  File "/home/asottile/opt/venv/lib/python3.8/site-packages/babi/main.py", line 176, in main
    return c_main(stdscr, file_infos, stdin, perf)
  File "/home/asottile/opt/venv/lib/python3.8/site-packages/babi/main.py", line 63, in c_main
    res = _edit(screen, stdin)
  File "/home/asottile/opt/venv/lib/python3.8/site-packages/babi/main.py", line 36, in _edit
    ret = Screen.DISPATCH[key.keyname](screen)
  File "/home/asottile/opt/venv/lib/python3.8/site-packages/babi/screen.py", line 770, in save_filename
    return self.save()
  File "/home/asottile/opt/venv/lib/python3.8/site-packages/babi/screen.py", line 735, in save
    *_, sha256 = get_lines(f)
  File "/home/asottile/opt/venv/lib/python3.8/site-packages/babi/file.py", line 47, in get_lines
    for line in sio:
  File "/usr/lib/python3.8/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x98 in position 0: invalid start byte