From 3dec48557a2b9ff64237d2aa4077c65a62c6af42 Mon Sep 17 00:00:00 2001
From: Andre Hartmann <aha_1980@gmx.de>
Date: Sun, 18 Mar 2012 19:58:29 +0100
Subject: [PATCH] Fix C++ Macro Usages when Definition contains Newline.

Now truncates the displayed line at the first Newline character after
the Macro name.

Task-number: QTCREATORBUG-7113

Change-Id: Ifb13c01d10b97098b54ac4346a80f0dcff3a35f3
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
---
 src/plugins/cpptools/cppfindreferences.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 91676c63339..2182f7c8512 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -646,9 +646,14 @@ void CppFindReferences::findMacroUses(const Macro &macro)
     {
         // ### FIXME: Encoding?
         const QByteArray &source = getSource(macro.fileName(), workingCopy).toLatin1();
-        const QByteArray line = source.mid(macro.offset(), macro.length());
+        QByteArray line = source.mid(macro.offset(), macro.length());
+        const int macroNameOffset = line.indexOf(macro.name());
+        const int macroNameLength = macro.name().length();
+        const int possibleNewLine = line.indexOf('\n', macroNameOffset + macroNameLength);
+        if (possibleNewLine != -1)
+            line.truncate(possibleNewLine); // truncate line at first '\n' after macro name
         search->addResult(macro.fileName(), macro.line(), line,
-                          line.indexOf(macro.name()), macro.name().length());
+                          macroNameOffset, macroNameLength);
     }
 
     QFuture<Usage> result;
-- 
GitLab