diff --git a/src/ts/adapt/interface/tsadapt.c b/src/ts/adapt/interface/tsadapt.c index 1b57717..0f1b6a2 100644 --- a/src/ts/adapt/interface/tsadapt.c +++ b/src/ts/adapt/interface/tsadapt.c @@ -130,6 +130,8 @@ PetscErrorCode TSAdaptSetType(TSAdapt adapt,TSAdaptType type) ierr = PetscFunctionListFind(TSAdaptList,type,&r);CHKERRQ(ierr); if (!r) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_ARG_UNKNOWN_TYPE,"Unknown TSAdapt type \"%s\" given",type); if (((PetscObject)adapt)->type_name) {ierr = (*adapt->ops->destroy)(adapt);CHKERRQ(ierr);} + /* Reinitialize function pointers in TSAdaptOps structure */ + ierr = PetscMemzero(adapt->ops,sizeof(struct _TSAdaptOps));CHKERRQ(ierr); ierr = (*r)(adapt);CHKERRQ(ierr); ierr = PetscObjectChangeTypeName((PetscObject)adapt,type);CHKERRQ(ierr); PetscFunctionReturn(0);