diff --git a/src/mat/impls/aij/seq/aij.c b/src/mat/impls/aij/seq/aij.c index f05b858..91a51d5 100644 --- a/src/mat/impls/aij/seq/aij.c +++ b/src/mat/impls/aij/seq/aij.c @@ -2862,6 +2862,7 @@ PetscErrorCode MatAXPY_SeqAIJ(Mat Y,PetscScalar a,Mat X,MatStructure str) ierr = MatHeaderReplace(Y,B);CHKERRQ(ierr); ierr = PetscFree(nnz);CHKERRQ(ierr); } + ierr = PetscObjectStateIncrease((PetscObject)Y);CHKERRQ(ierr); PetscFunctionReturn(0); } diff --git a/src/mat/utils/gcreate.c b/src/mat/utils/gcreate.c index 55665bf..eb8fd76 100644 --- a/src/mat/utils/gcreate.c +++ b/src/mat/utils/gcreate.c @@ -336,8 +336,9 @@ PetscErrorCode MatHeaderMerge(Mat A,Mat C) #define __FUNCT__ "MatHeaderReplace" PETSC_EXTERN PetscErrorCode MatHeaderReplace(Mat A,Mat C) { - PetscErrorCode ierr; - PetscInt refct; + PetscErrorCode ierr; + PetscInt refct; + PetscObjectState state; PetscFunctionBegin; PetscValidHeaderSpecific(A,MAT_CLASSID,1); @@ -356,9 +357,11 @@ PETSC_EXTERN PetscErrorCode MatHeaderReplace(Mat A,Mat C) /* copy C over to A */ refct = ((PetscObject)A)->refct; + state = ((PetscObject)A)->state; ierr = PetscMemcpy(A,C,sizeof(struct _p_Mat));CHKERRQ(ierr); ((PetscObject)A)->refct = refct; + ((PetscObject)A)->state = state; ierr = PetscFree(C);CHKERRQ(ierr); PetscFunctionReturn(0);