Skip to content

Fix path splitting error on Windows

Due to \ being used as path separators on Windows in paths produced by os.path.join passed to the file_entry() function, it fails to correctly split the path string because it expects / only.

Example:

filename:
archive/icons/fdroid-icon.png
['archive', 'icons/fdroid-icon.png']
filename:
archive\index-v2.json
['archive\\index-v2.json']
2024-03-09 00:40:24,392 CRITICAL: Unknown exception found!
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "E:\Sources\fdroid\fdroidserver-env\Scripts\fdroid.exe\__main__.py", line 7, in <module>
  File "E:\Sources\fdroid\fdroidserver-env\Lib\site-packages\fdroidserver\__main__.py", line 222, in main
    raise e
  File "E:\Sources\fdroid\fdroidserver-env\Lib\site-packages\fdroidserver\__main__.py", line 203, in main
    mod.main()
  File "E:\Sources\fdroid\fdroidserver-env\Lib\site-packages\fdroidserver\update.py", line 2436, in main
    fdroidserver.index.make(archived_apps, archapks, repodirs[1], True)
  File "E:\Sources\fdroid\fdroidserver-env\Lib\site-packages\fdroidserver\index.py", line 125, in make
    make_v2(sortedapps, apks, repodir, repodict, requestsdict,
  File "E:\Sources\fdroid\fdroidserver-env\Lib\site-packages\fdroidserver\index.py", line 780, in make_v2
    entry["index"] = common.file_entry(index_file)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\Sources\fdroid\fdroidserver-env\Lib\site-packages\fdroidserver\common.py", line 563, in file_entry
    meta["name"] = "/" + filename.split("/", 1)[1]
                         ~~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range

Note: the filename: logging was added by me for debugging

Edited by Sergey Zolotarev

Merge request reports