[poppler] splash/SplashFontFile.h
Albert Astals Cid
aacid at kde.org
Tue Nov 2 11:46:03 PDT 2010
A Dimarts, 2 de novembre de 2010, vàreu escriure:
> On Tue, 2 Nov 2010, Albert Astals Cid wrote:
> > A Dimarts, 2 de novembre de 2010, Vincent Torri va escriure:
> >> On Mon, 1 Nov 2010, Albert Astals Cid wrote:
> >>> splash/SplashFontFile.h | 5 +++--
> >>> 1 file changed, 3 insertions(+), 2 deletions(-)
> >>>
> >>> New commits:
> >>> commit 6751eb48dc49890f7ad8b732b3fc29a2db746ec4
> >>> Author: Albert Astals Cid <aacid at kde.org>
> >>> Date: Tue Nov 2 00:26:08 2010 +0000
> >>>
> >>> Make the destructor private
> >>>
> >>> You are not supposed to call it, you should call unref
> >>
> >> then, why do you redefine it ?
> >
> > Redefine what? The destructor? Because we need it
>
> why ?
>
> >> It is very rare (and imho very dangerous) to explicitely call the
> >
> > destructor, btw.
> >
> > Rare calling a destructor in general? Or you mean doing "delete this"?
>
> to *explicitely* call the destructor. The destructor is automatically
> called at the end of the block where the var has been declared, or when
> delete it if it has been allocated by new.
>
> > Doing "delete this" is perfectly fine and non dangerous (altough i agree
> > it's rare for non explicitely refcounted classes) if the semantics are
> > well defined.
>
> It is dangerous if the guys does not know what he is doing, which is
> quite possible in C++. Then a double free can be done.
clueless people do wrong things all the time.
>
> > We do it in lots of other classes. That's why the destructor has to
> > be private so you can see the semantics of ref/unref. (And yes i agree
> > that explicitely refcounted classes suck and implicitely refcounted ones
> > are much better/nicer to use)
> >
> >> Also, I note that it deletes an object that is not allocated in the
> >> constructor. It should not. It's up to the user to destroy idA which is
> >> passed to the constructor, not the destructor.
> >
> > That's your opinion, not what whoever coded the class (Takashi afair)
> > decided.
>
> Yes, it's my opinion. My opinion is that the class should own its data.
> It's a safer opinion. Less possible leaks.
>
> But it seems you are stuck with a code you didn't write.
I'm stuck with a code that works ;-)
Albert
>
> Vincent Torri
>
> > It is quite normal adopting pointers you are passed either in the
> > constructor or in some method. The thing is that it is usually
> > documented, but this is poppler so sadly there is no documentation.
> >
> > Albert
> >
> >> Vincent Torri
> >>
> >>> diff --git a/splash/SplashFontFile.h b/splash/SplashFontFile.h
> >>> index f2b4570..8945be2 100644
> >>> --- a/splash/SplashFontFile.h
> >>> +++ b/splash/SplashFontFile.h
> >>> @@ -12,7 +12,7 @@
> >>> // under GPL version 2 or later
> >>> //
> >>> // Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
> >>> -// Copyright (C) 2008 Albert Astals Cid <aacid at kde.org>
> >>> +// Copyright (C) 2008, 2010 Albert Astals Cid <aacid at kde.org>
> >>> //
> >>> // To see a description of the changes please see the Changelog file
> >>> that // came with your tarball or type make ChangeLog if you are
> >>> building from git @@ -41,7 +41,6 @@ class SplashFontFileID;
> >>> class SplashFontSrc {
> >>>
> >>> public:
> >>> SplashFontSrc();
> >>>
> >>> - ~SplashFontSrc();
> >>>
> >>> void setFile(GooString *file, GBool del);
> >>> void setFile(const char *file, GBool del);
> >>>
> >>> @@ -56,6 +55,8 @@ public:
> >>> int bufLen;
> >>> GBool deleteSrc;
> >>> int refcnt;
> >>>
> >>> +private:
> >>> + ~SplashFontSrc();
> >>> };
> >>>
> >>> class SplashFontFile {
> >>> _______________________________________________
> >>> poppler mailing list
> >>> poppler at lists.freedesktop.org
> >>> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>
> >> _______________________________________________
> >> poppler mailing list
> >> poppler at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/poppler
> >
> > _______________________________________________
> > poppler mailing list
> > poppler at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/poppler
More information about the poppler
mailing list