From 8f2d86aff65cfe76a931e7a1a1a7f33943cb8622 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 17 May 2025 14:52:15 +0200 Subject: [PATCH 1/4] Fix potential memory corruption if INFO<0 --- SRC/cgeev.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRC/cgeev.f b/SRC/cgeev.f index b9a7f1414..753fbff0a 100644 --- a/SRC/cgeev.f +++ b/SRC/cgeev.f @@ -496,7 +496,7 @@ SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA ) THEN + IF( SCALEA .AND. INFO.GE.0) THEN CALL CLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, $ W( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) From 4ac1c6922e79bca028091162db197539aaad04a6 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 17 May 2025 14:58:27 +0200 Subject: [PATCH 2/4] Update dgeev.f --- SRC/dgeev.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRC/dgeev.f b/SRC/dgeev.f index e32a0f29d..9efc11499 100644 --- a/SRC/dgeev.f +++ b/SRC/dgeev.f @@ -517,7 +517,7 @@ SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA ) THEN + IF( SCALEA .AND. INFO.GE.0 ) THEN CALL DLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, $ WR( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) From 76ce5053f411f69adbc8530b98d7de5eb6a35124 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 17 May 2025 14:59:29 +0200 Subject: [PATCH 3/4] Avoid memory corruption if INFO<0 --- SRC/sgeev.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRC/sgeev.f b/SRC/sgeev.f index 074de68dc..70783156c 100644 --- a/SRC/sgeev.f +++ b/SRC/sgeev.f @@ -519,7 +519,7 @@ SUBROUTINE SGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA ) THEN + IF( SCALEA .AND. INFO.GE.0 ) THEN CALL SLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, $ WR( INFO+1 ), $ MAX( N-INFO, 1 ), IERR ) From d72484317a6f08539707be9d1681de6c807d6df9 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 17 May 2025 15:00:44 +0200 Subject: [PATCH 4/4] Avoid memory corruption if INFO<0 --- SRC/zgeev.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRC/zgeev.f b/SRC/zgeev.f index 09ee680ac..94d8a0606 100644 --- a/SRC/zgeev.f +++ b/SRC/zgeev.f @@ -493,7 +493,7 @@ SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, * Undo scaling if necessary * 50 CONTINUE - IF( SCALEA ) THEN + IF( SCALEA .AND.INFO.GE.0) THEN CALL ZLASCL( 'G', 0, 0, CSCALE, ANRM, N-INFO, 1, $ W( INFO+1 ), $ MAX( N-INFO, 1 ), IERR )