From 84cdf8ff6d414dfbf8e1f4b112bf0cdbf731f129 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 7 Jan 2008 16:59:15 +0000 Subject: [PATCH] Fix realloc for 2D arrays. --- base/modules/psb_realloc_mod.F90 | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/base/modules/psb_realloc_mod.F90 b/base/modules/psb_realloc_mod.F90 index 9225716d..ef1e4ae8 100644 --- a/base/modules/psb_realloc_mod.F90 +++ b/base/modules/psb_realloc_mod.F90 @@ -1329,13 +1329,15 @@ Contains end if else if (allocated(vin)) then if (.not.allocated(vout)) then - allocate(vout(size(vin,1),size(vin,2)),stat=info) + allocate(vout(lbound(vin,1):ubound(vin,1),& + & lbound(vin,2):ubound(vin,2)),stat=info) if (info /= 0) return else if (size(vout) /= size(vin)) then deallocate(vout,stat=info) if (info /= 0) return - allocate(vout(size(vin,1),size(vin,2)),stat=info) + allocate(vout(lbound(vin,1):ubound(vin,1),& + & lbound(vin,2):ubound(vin,2)),stat=info) if (info /= 0) return end if end if @@ -1401,13 +1403,15 @@ Contains end if else if (allocated(vin)) then if (.not.allocated(vout)) then - allocate(vout(size(vin,1),size(vin,2)),stat=info) + allocate(vout(lbound(vin,1):ubound(vin,1),& + & lbound(vin,2):ubound(vin,2)),stat=info) if (info /= 0) return else if (size(vout) /= size(vin)) then deallocate(vout,stat=info) if (info /= 0) return - allocate(vout(size(vin,1),size(vin,2)),stat=info) + allocate(vout(lbound(vin,1):ubound(vin,1),& + & lbound(vin,2):ubound(vin,2)),stat=info) if (info /= 0) return end if end if @@ -1474,13 +1478,15 @@ Contains end if else if (allocated(vin)) then if (.not.allocated(vout)) then - allocate(vout(size(vin,1),size(vin,2)),stat=info) + allocate(vout(lbound(vin,1):ubound(vin,1),& + & lbound(vin,2):ubound(vin,2)),stat=info) if (info /= 0) return else if (size(vout) /= size(vin)) then deallocate(vout,stat=info) if (info /= 0) return - allocate(vout(size(vin,1),size(vin,2)),stat=info) + allocate(vout(lbound(vin,1):ubound(vin,1),& + & lbound(vin,2):ubound(vin,2)),stat=info) if (info /= 0) return end if end if