Browse Source

Fix for Mantis #27320.

symdef.pas, tprocdef:
  * defaultmangledname: don't use the potentially unassigned hp, but use - as intended - returndef if it is set (analog to the non-CRC part)

+ added test

git-svn-id: trunk@29537 -
svenbarth 10 years ago
parent
commit
943a094683
4 changed files with 38 additions and 2 deletions
  1. 2 0
      .gitattributes
  2. 5 2
      compiler/symdef.pas
  3. 8 0
      tests/webtbs/tw27320.pp
  4. 23 0
      tests/webtbs/uw27320.defaults.pp

+ 2 - 0
.gitattributes

@@ -14216,6 +14216,7 @@ tests/webtbs/tw27294.pp svneol=native#text/plain
 tests/webtbs/tw2730.pp svneol=native#text/plain
 tests/webtbs/tw27300a.pp svneol=native#text/pascal
 tests/webtbs/tw2731.pp svneol=native#text/plain
+tests/webtbs/tw27320.pp svneol=native#text/pascal
 tests/webtbs/tw2736.pp svneol=native#text/plain
 tests/webtbs/tw2737.pp svneol=native#text/plain
 tests/webtbs/tw2738.pp svneol=native#text/plain
@@ -14959,6 +14960,7 @@ tests/webtbs/uw2706a.pp svneol=native#text/plain
 tests/webtbs/uw2706b.pp svneol=native#text/plain
 tests/webtbs/uw27294.pp svneol=native#text/plain
 tests/webtbs/uw2731.pp svneol=native#text/plain
+tests/webtbs/uw27320.defaults.pp svneol=native#text/pascal
 tests/webtbs/uw2738.pp svneol=native#text/plain
 tests/webtbs/uw2834.pp svneol=native#text/plain
 tests/webtbs/uw2920.pp svneol=native#text/plain

+ 5 - 2
compiler/symdef.pas

@@ -5508,8 +5508,11 @@ implementation
                     crc:=UpdateCrc32(crc,hs[1],length(hs));
                   end;
               end;
-            hs:=hp.vardef.mangledparaname;
-            crc:=UpdateCrc32(crc,hs[1],length(hs));
+            if not is_void(returndef) then
+              begin
+                hs:=returndef.mangledparaname;
+                crc:=UpdateCrc32(crc,hs[1],length(hs));
+              end;
             defaultmangledname:=Copy(defaultmangledname,1,oldlen)+'$crc'+hexstr(crc,8);
           end;
       end;

+ 8 - 0
tests/webtbs/tw27320.pp

@@ -0,0 +1,8 @@
+{ %NORUN }
+
+program tw27320;
+
+uses uw27320.Defaults;
+
+begin
+end.

+ 23 - 0
tests/webtbs/uw27320.defaults.pp

@@ -0,0 +1,23 @@
+unit uw27320.Defaults;
+
+{$MODE DELPHI}
+
+interface
+
+type
+  IEqualityComparer<T> = interface
+  end;
+
+  TEqualityComparer<T> = class
+  public
+    class function Default: IEqualityComparer<T>; static;
+  end;
+
+implementation
+
+class function TEqualityComparer<T>.Default: IEqualityComparer<T>;
+begin
+end;
+
+end.
+