diff --git a/src/PinAssignment/PcfObserver.cpp b/src/PinAssignment/PcfObserver.cpp
index 0d9b933af..b237d297c 100644
--- a/src/PinAssignment/PcfObserver.cpp
+++ b/src/PinAssignment/PcfObserver.cpp
@@ -78,24 +78,30 @@ QList<PcfLineFrame> PcfObserver::parsePcfFile(const QString& filePath)
 
   QFile file{filePath};
   if (file.open(QFile::ReadOnly)) {
-    QList<QString> lines = QtUtils::StringSplit(QString{file.readAll()}, '\n');
+    QList<QString> lines;
+
+    QTextStream in(&file);
     int lineCount = 1;
-    for (const QString& line: lines) {
-      PcfLineFrame frame;
-      frame.lineNum = lineCount;
-      frame.line = line;
-      QList<QString> elements = QtUtils::StringSplit(line, ' ');
-      if (elements.size() > 0) {
-        frame.cmd = elements.at(0);
-      }
-      if (elements.size() > 1) {
-        frame.port = elements.at(1);
+    while (!in.atEnd()) {
+      QString line{in.readLine()};
+
+      if (!line.isEmpty()) {
+        PcfLineFrame frame;
+        frame.lineNum = lineCount;
+        frame.line = line;
+        QList<QString> elements = QtUtils::StringSplit(line, ' ');
+        if (elements.size() > 0) {
+          frame.cmd = elements.at(0);
+        }
+        if (elements.size() > 1) {
+          frame.port = elements.at(1);
+        }
+        if (elements.size() > 2) {
+          frame.pin = elements.at(2);
+        }
+
+        lineFrames.append(frame);
       }
-      if (elements.size() > 2) {
-        frame.pin = elements.at(2);
-      }
-
-      lineFrames.append(frame);
 
       lineCount++;
     }