Pastey EDS: create_table error when init_records < MAX_INDEX with loop test

# HG changeset patch
# User Guillermo Bonvehi 
# Date 1391759568 10800
# Node ID b76ebbe7416c0912f496fedb3146ef59442fb8f8
# Parent  2c379fb63e7481d4e7aa1330b5d4789af612a163
EDS: create_table error when init_records < MAX_INDEX

diff -r 2c379fb63e74 -r b76ebbe7416c include/std/eds.e
--- a/include/std/eds.e Wed Jan 29 11:00:14 2014 -0500
+++ b/include/std/eds.e Fri Feb 07 04:52:48 2014 -0300
@@ -1646,10 +1646,10 @@
        putn(repeat(0, init_records * 4))
 
        -- allocate initial space for the index
-       index_ptr = db_allocate(init_index * 8)
+       index_ptr = db_allocate((init_index+1) * 8)
        put4(0)  -- 0 records
        put4(records_ptr) -- point to 1st block
-       putn(repeat(0, (init_index-1) * 8))
+       putn(repeat(0, init_index * 8))
 
        -- store new table
        name_ptr = db_allocate(length(name)+1)
diff -r 2c379fb63e74 -r b76ebbe7416c tests/t_database.e
--- a/tests/t_database.e        Wed Jan 29 11:00:14 2014 -0500
+++ b/tests/t_database.e        Fri Feb 07 04:52:48 2014 -0300
@@ -372,6 +372,25 @@
 end procedure
 test_dump()
 
+procedure test_create_table_init_records()
+       sequence the_db = "create_table_init_records.edb"
+       sequence test_table
+       db_fatal_id = routine_id( "db_fatal_error" )
+       db_close()
+       if file_exists( the_db ) then
+               delete_file( the_db )
+       end if
+       test_equal( "create " & the_db, DB_OK, db_create( the_db ) )
+       for i = 0 to 10 do
+               test_table = sprintf( "table%d", i )
+               test_equal( "create " & the_db & " " & test_table, DB_OK, db_create_table( test_table, i ) )
+               db_insert( "dummy", "data" )
+               db_clear_table( test_table )
+       end for
+       db_close()
+       delete_file( the_db )
+end procedure
+test_create_table_init_records()
 
 
 test_report()