Sfoglia il codice sorgente

* 0 is a valid label in iso mode, resolves #37428

git-svn-id: trunk@46362 -
florian 5 anni fa
parent
commit
6dac888ae5
4 ha cambiato i file con 11 aggiunte e 2 eliminazioni
  1. 1 0
      .gitattributes
  2. 1 1
      compiler/pdecl.pas
  3. 1 1
      compiler/pstatmnt.pas
  4. 8 0
      tests/webtbs/tw37428.pp

+ 1 - 0
.gitattributes

@@ -18407,6 +18407,7 @@ tests/webtbs/tw37400.pp svneol=native#text/pascal
 tests/webtbs/tw3742.pp svneol=native#text/plain
 tests/webtbs/tw37423.pp svneol=native#text/plain
 tests/webtbs/tw37427.pp svneol=native#text/pascal
+tests/webtbs/tw37428.pp svneol=native#text/pascal
 tests/webtbs/tw37449.pp svneol=native#text/pascal
 tests/webtbs/tw37468.pp svneol=native#text/pascal
 tests/webtbs/tw37477.pp svneol=native#text/pascal

+ 1 - 1
compiler/pdecl.pas

@@ -390,7 +390,7 @@ implementation
                   begin
                     { strip leading 0's in iso mode }
                     if (([m_iso,m_extpas]*current_settings.modeswitches)<>[]) then
-                      while pattern[1]='0' do
+                      while (length(pattern)>1) and (pattern[1]='0') do
                         delete(pattern,1,1);
                     labelsym:=clabelsym.create(pattern);
                   end;

+ 1 - 1
compiler/pstatmnt.pas

@@ -1168,7 +1168,7 @@ implementation
 
                         { strip leading 0's in iso mode }
                         if (([m_iso,m_extpas]*current_settings.modeswitches)<>[]) then
-                          while pattern[1]='0' do
+                          while (length(pattern)>1) and (pattern[1]='0') do
                             delete(pattern,1,1);
 
                         searchsym(pattern,srsym,srsymtable);

+ 8 - 0
tests/webtbs/tw37428.pp

@@ -0,0 +1,8 @@
+{$mode iso}
+label
+  0;
+
+begin
+  0:
+    writeln('ok');
+end.