diff --git a/.gitattributes b/.gitattributes
index 984a22c556..9d1cf035d9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -18498,6 +18498,7 @@ tests/webtbs/tw37878.pp svneol=native#text/plain
 tests/webtbs/tw37926.pp svneol=native#text/pascal
 tests/webtbs/tw37949.pp svneol=native#text/pascal
 tests/webtbs/tw3796.pp svneol=native#text/plain
+tests/webtbs/tw37969.pp svneol=native#text/pascal
 tests/webtbs/tw3805.pp svneol=native#text/plain
 tests/webtbs/tw3814.pp svneol=native#text/plain
 tests/webtbs/tw3827.pp svneol=native#text/plain
diff --git a/compiler/htypechk.pas b/compiler/htypechk.pas
index 38e2a4af74..a3a0b532d5 100644
--- a/compiler/htypechk.pas
+++ b/compiler/htypechk.pas
@@ -3691,7 +3691,7 @@ implementation
                end;
              { Setup the first procdef as best, only count it as a result
                when it is valid }
-             if FCandidateProcs^.invalid then
+             if besthpstart^.invalid then
                cntpd:=0
              else
                cntpd:=1;
@@ -3701,7 +3701,9 @@ implementation
                  restart := decide_restart(hp,besthpstart);
                  if not restart then
                    begin
-                   if not singlevariant then
+                   if besthpstart^.invalid then res := 1
+                   else if hp^.invalid then res := -1
+                   else if not singlevariant then
                      res:=is_better_candidate(hp,besthpstart)
                    else
                      res:=is_better_candidate_single_variant(hp,besthpstart);
@@ -3721,7 +3723,10 @@ implementation
                        end;
                      { besthpstart is already set to hp }
                      bestpd:=besthpstart^.data;
-                     cntpd:=1;
+                     if besthpstart^.invalid then
+                       cntpd:=0
+                     else
+                       cntpd:=1;
                    end
                  else if (res<0) then
                    begin
diff --git a/tests/webtbs/tw37969.pp b/tests/webtbs/tw37969.pp
new file mode 100644
index 0000000000..a72304a7d5
--- /dev/null
+++ b/tests/webtbs/tw37969.pp
@@ -0,0 +1,11 @@
+{$mode objfpc}
+program Project1;
+
+uses
+  sysutils;
+var
+  aValue: variant;
+  s: String;
+begin
+  s := Trim( aValue );
+end.