Sfoglia il codice sorgente

Fixed nulling of allocated heap blocks

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6417 8c9fc860-2736-0410-a75d-ab315db34111
eth.negelef 10 anni fa
parent
commit
2bfb9e6dcf
1 ha cambiato i file con 5 aggiunte e 1 eliminazioni
  1. 5 1
      source/RPI.Environment.Mod

+ 5 - 1
source/RPI.Environment.Mod

@@ -23,8 +23,12 @@ BEGIN {UNCOOPERATIVE, UNCHECKED}
 END Abort;
 
 PROCEDURE Allocate- (size: SIZE): ADDRESS;
+VAR result, address: ADDRESS;
 BEGIN {UNCOOPERATIVE, UNCHECKED}
-	RETURN HeapManager.Allocate (size, heap);
+	result := HeapManager.Allocate (size, heap);
+	IF result = NIL THEN RETURN NIL END;
+	FOR address := result TO result + size - 1 DO SYSTEM.PUT8 (address, 0) END;
+	RETURN result;
 END Allocate;
 
 PROCEDURE Deallocate- (address: ADDRESS);