Thread: pgAdmin III commit: Fix deleting lines in frmEditGrid with 64bit system
pgAdmin III commit: Fix deleting lines in frmEditGrid with 64bit system
From
Guillaume Lelarge
Date:
Fix deleting lines in frmEditGrid with 64bit systems I believe I've fixed a problem where pgAdmin intermittently crashes on 64 bit systems while deleting rows. The issues seems to be that, among other things, sqlTable::DeleteRows() in frm/frmEditGrid.cpp attempts to remove an element in lineIndex by shifting down the remaining elements. Unfortunately the "sizeof" is taking the size of the wrong thing. I suspect this is only an issue on systems where pointers and "int"s are different sizes, which should be 64 bit systems, but I have only have a 64 bit Linux system handy to try. Increasing the number of rows that follow the row deleted should increase the probability of getting a crash, but Valgrind always complains about bad reads and writes for the memmove() in question. Steps to reproduce the problem: 1) Choose a table that has roughly 200 or more rows. Here's a dump of such a table: http://selliott.org/pgadmin/table-200-rows.sql 2) Navigate to the "Edit Data" window (the window navigated to by selecting the View Data / View All Rows for the table in question). 3) Select a low numbered row, such as the fifth row. 4) Right click and select "Delete". The crash may happen when the delete is confirmed after the subsequent dialog. Branch ------ REL-1_14_0_PATCHES Details ------- http://git.postgresql.org/gitweb?p=pgadmin3.git;a=commitdiff;h=978ca323beb2f8d96efa0c9eaee6ffceac86da0c Author: Steven Elliot <selliott4@austin.rr.com> Modified Files -------------- CHANGELOG | 2 ++ pgadmin/frm/frmEditGrid.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletions(-)