summaryrefslogtreecommitdiffstats
path: root/arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff
diff options
context:
space:
mode:
Diffstat (limited to 'arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff')
-rw-r--r--arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff60
1 files changed, 60 insertions, 0 deletions
diff --git a/arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff b/arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff
new file mode 100644
index 000000000..172333cf3
--- /dev/null
+++ b/arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff
@@ -0,0 +1,60 @@
+commit 6ccb5528ecff0cf0db5fe2f81b26a79959e87902
+Author: Slávek Banko <[email protected]>
+Date: Fri Oct 29 03:47:53 2021 +0200
+
+ Prevent null pointer deference in methods for selection.
+ This resolves the crash when exporting the Basket archive.
+
+ Signed-off-by: Slávek Banko <[email protected]>
+ (cherry picked from commit a08c6ac9e3c8ac162ce08b730fd6108e2f71213c)
+
+diff --git a/src/archive.cpp b/src/archive.cpp
+index 3f3377c..aec789f 100644
+--- a/src/archive.cpp
++++ b/src/archive.cpp
+@@ -228,7 +228,8 @@ void Archive::saveBasketToArchive(Basket *basket, bool recursive, KTar *tar, TQS
+
+ // Recursively save child baskets:
+ BasketListViewItem *item = Global::bnpView->listViewItemForBasket(basket);
+- if (recursive && item->firstChild()) {
++ if (recursive && item && item->firstChild())
++ {
+ for (BasketListViewItem *child = (BasketListViewItem*) item->firstChild(); child; child = (BasketListViewItem*) child->nextSibling()) {
+ saveBasketToArchive(child->basket(), recursive, tar, backgrounds, tempFolder, progress);
+ }
+diff --git a/src/basket.cpp b/src/basket.cpp
+index a4edb31..67107d2 100644
+--- a/src/basket.cpp
++++ b/src/basket.cpp
+@@ -4469,12 +4469,20 @@ void Basket::noteUngroup()
+
+ void Basket::unplugSelection(NoteSelection *selection)
+ {
++ if (!selection)
++ {
++ return;
++ }
+ for (NoteSelection *toUnplug = selection->firstStacked(); toUnplug; toUnplug = toUnplug->nextStacked())
+ unplugNote(toUnplug->note);
+ }
+
+ void Basket::insertSelection(NoteSelection *selection, Note *after)
+ {
++ if (!selection)
++ {
++ return;
++ }
+ for (NoteSelection *toUnplug = selection->firstStacked(); toUnplug; toUnplug = toUnplug->nextStacked()) {
+ if (toUnplug->note->isGroup()) {
+ Note *group = new Note(this);
+@@ -4496,6 +4504,10 @@ void Basket::insertSelection(NoteSelection *selection, Note *after)
+
+ void Basket::selectSelection(NoteSelection *selection)
+ {
++ if (!selection)
++ {
++ return;
++ }
+ for (NoteSelection *toUnplug = selection->firstStacked(); toUnplug; toUnplug = toUnplug->nextStacked()) {
+ if (toUnplug->note->isGroup())
+ selectSelection(toUnplug);