From cd7748f8e48db2ee90e7e2ff2548b2f2033ffb92 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Mon, 15 Apr 2019 12:42:29 +0200
Subject: [PATCH] BUG: bad '#line' directives for dynamicCode (fixes #1282)

- now suppress any '#line' if the input number number is invalid
  (ie, an empty set of tokens)
---
 .../dynamicLibrary/dynamicCode/dynamicCodeContext.C   | 11 ++++++++---
 .../dynamicLibrary/dynamicCode/dynamicCodeContext.H   |  9 +++++----
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.C b/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.C
index 36e8407afb0..089948e6f04 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.C
+++ b/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           |
+    \\  /    A nd           | Copyright (C) 2019 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
                             | Copyright (C) 2011-2016 OpenFOAM Foundation
@@ -124,11 +124,16 @@ Foam::dynamicCodeContext::dynamicCodeContext(const dictionary& dict)
 void Foam::dynamicCodeContext::addLineDirective
 (
     string& code,
-    const label lineNum,
+    label lineNum,
     const fileName& name
 )
 {
-    code = "#line " + Foam::name(lineNum + 1) + " \"" + name + "\"\n" + code;
+    ++lineNum;  // Change from 0-based to 1-based
+
+    if (lineNum > 0 && !name.empty())
+    {
+        code = "#line " + Foam::name(lineNum) + " \"" + name + "\"\n" + code;
+    }
 }
 
 
diff --git a/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H b/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H
index 60acd3bb5a8..38d4dd80066 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H
+++ b/src/OpenFOAM/db/dynamicLibrary/dynamicCode/dynamicCodeContext.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           |
+    \\  /    A nd           | Copyright (C) 2019 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
                             | Copyright (C) 2011-2016 OpenFOAM Foundation
@@ -80,7 +80,7 @@ public:
     // Constructors
 
         //- Construct from a dictionary
-        dynamicCodeContext(const dictionary&);
+        dynamicCodeContext(const dictionary& dict);
 
 
     // Member functions
@@ -128,10 +128,11 @@ public:
         }
 
         //- Helper: add \#line directive
+        //  The lineNum is 0-based. No-op if the lineNum is negative.
         static void addLineDirective
         (
-            string&,
-            const label lineNum,
+            string& code,
+            label lineNum,
             const fileName& name
         );
 };
-- 
GitLab