]> git.llucax.com Git - z.facultad/75.00/informe.git/commitdiff
Corregir free_big_object() para que setee bien block_size = FREE
authorLeandro Lucarella <llucax@gmail.com>
Thu, 30 Sep 2010 23:33:52 +0000 (20:33 -0300)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 30 Sep 2010 23:33:52 +0000 (20:33 -0300)
Según el algoritmo mostrado, no se seteaba en FREE la primera página.

source/dgc.rst

index 6bf610527f9d3dfd28a7bdc0684948b1d4c0a4f3..cccb5b192fb2f4b9fa905e999e4bcfdc3d9fec0b 100644 (file)
@@ -678,9 +678,9 @@ objetos grandes se marcan todas las páginas que utilizaban como ``FREE``::
    function free_big_object(pool, page) is
       pool_end = cast(byte*) pool.pages + (PAGE_SIZE * pool.number_of_pages)
       do
-         page = cast(byte*) page + PAGE_SIZE
          page.block_size = FREE
-      while page.block_size is CONTINUATION and page < pool_end
+         page = cast(byte*) page + PAGE_SIZE
+      while page < pool_end and page.block_size is CONTINUATION
 
 Además, los bloques que tienen en atributo ``final`` son finalizados llamando
 a la función ``finalize()``. Esta función es un servicio que provee la