freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy()


From: Richard Guenther
Subject: RE: [pooma-dev] [PATCH] Fix Engine<.., MultiPatch<..> >::makeOwnC opy()
Date: Tue, 22 Apr 2003 19:51:22 +0200 (CEST)

On Tue, 22 Apr 2003, James Crotinger wrote:

> Hmmm. I don't have time to play with this, but something looks wrong. The
> sequence
>
>       data_m.makeOwnCopy();
>       if (data_m.isShared())

Well ;) I attached a unified patch, the data_m.makeOwnCopy() is removed,
the rest added. The problem is, the data_m.makeOwnCopy() does not work.

Richard.

> 2003 Apr 22  Richard Guenther <address@hidden>
>
>       * Engine/MultiPatchEngine.cpp: do makeOwnCopy() manually.
>
> ===== MultiPatchEngine.cpp 1.3 vs edited =====
> --- 1.3/r2/src/Engine/MultiPatchEngine.cpp    Fri Jan 24 10:35:52 2003
> +++ edited/MultiPatchEngine.cpp       Tue Apr 22 17:42:04 2003
> @@ -244,8 +244,17 @@
>  Engine<Dim, T, MultiPatch<LayoutTag,PatchTag> >::
>  makeOwnCopy()
>  {
> -  data_m.makeOwnCopy();
> -
> +  PAssert(data_m.isValid());
> +  if (data_m.isShared()) {
> +    PatchContainer_t model = data_m;
> +    data_m = PatchContainer_t(model.size());
> +    for (int i=0; i<model.size(); ++i) {
> +      data_m[i] = model[i];
> +      data_m[i].makeOwnCopy();
> +    }
> +    pDirty_m = new bool(*pDirty_m);
> +  }
> +
>    return *this;
>  }
>
>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]