1
0
Fork 0

- prevented crash when removing two (or more) statuses that reblogged the same status.

When more  than one statuses points  to the same reblogged  status and
more the one of the formers  is deleted the first deletion will remove
the reblogged  status as well  and the second  will try to  remove the
same (already removed from db) status. This makes the program crash.
This commit is contained in:
cage 2021-03-15 18:33:16 +01:00
parent e191ef7f79
commit b3c3d8a232
1 changed files with 13 additions and 3 deletions

View File

@ -2320,9 +2320,19 @@ where all parent messages are saved."
(let ((marked-to-delete (statuses-marked-to-delete timeline folder)))
(loop for status-to-delete in marked-to-delete do
(when-let ((reblogged-id (row-message-reblog-id status-to-delete)))
(delete-status +default-reblogged-timeline+
+default-reblogged-folder+
reblogged-id))
;; sometimes a status is reblogged by more than
;; one of the statuses that you downloaded and if
;; you delete at least two of the latter the first
;; deletion will remove also the reblogged status,
;; so the other statuses should skip deletion of
;; the reblogged one as it has been already
;; removed
(when (find-status-id-folder-timeline reblogged-id
+default-reblogged-folder+
+default-reblogged-timeline+)
(delete-status +default-reblogged-timeline+
+default-reblogged-folder+
reblogged-id)))
(delete-status timeline folder (row-message-status-id status-to-delete))))))))
(defun max-username-length (timeline-type folder)