summaryrefslogtreecommitdiffstats
path: root/arch/tde-extra/tde-basket/bp000-fix-crash-on-export-basket-archive.diff
blob: 172333cf355bbf89658dc7c95271028680f1c1e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
commit 6ccb5528ecff0cf0db5fe2f81b26a79959e87902
Author: Slávek Banko <slavek.banko@axis.cz>
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 <slavek.banko@axis.cz>
    (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);