diff --git a/desktop/kde/applications/kdepim-runtime/files/fix-data-loss-bug-in-ical.patch b/desktop/kde/applications/kdepim-runtime/files/fix-data-loss-bug-in-ical.patch
new file mode 100644
index 0000000000..e4767b5b48
--- /dev/null
+++ b/desktop/kde/applications/kdepim-runtime/files/fix-data-loss-bug-in-ical.patch
@@ -0,0 +1,23 @@
+diff --git a/resources/shared/singlefileresource/singlefileresource.h b/resources/shared/singlefileresource/singlefileresource.h
+index f3c19aa..3f41499 100644
+--- a/resources/shared/singlefileresource/singlefileresource.h
++++ b/resources/shared/singlefileresource/singlefileresource.h
+@@ -55,7 +55,7 @@ public:
+ , mSettings(new Settings(config()))
+ {
+ // The resource needs network when the path refers to a non local file.
+- setNeedsNetwork(!QUrl(mSettings->path()).isLocalFile());
++ setNeedsNetwork(!QUrl::fromUserInput(mSettings->path()).isLocalFile());
+ }
+ ~SingleFileResource()
+ {
+@@ -82,7 +82,7 @@ public:
+ return;
+ }
+
+- mCurrentUrl = QUrl(mSettings->path()); // path already has scheme
++ mCurrentUrl = QUrl::fromUserInput(mSettings->path()); // the string contains the scheme if remote, doesn't if local path
+ if (mCurrentHash.isEmpty())
+ {
+ // First call to readFile() lets see if there is a hash stored in a
+--
diff --git a/desktop/kde/applications/kdepim-runtime/pspec.xml b/desktop/kde/applications/kdepim-runtime/pspec.xml
index f0ec89481f..e27f20ad1b 100644
--- a/desktop/kde/applications/kdepim-runtime/pspec.xml
+++ b/desktop/kde/applications/kdepim-runtime/pspec.xml
@@ -54,6 +54,9 @@
prison-devel
qt5-speech-devel
+
+ fix-data-loss-bug-in-ical.patch
+