[Zope-dev] Acquisition/cDocumentTemplate bug

Oleg Broytmann phd@phd.russ.ru
Thu, 20 Jul 2000 09:15:17 +0000 (GMT)


Hi!

   Anyone is working on it? Should I put this into Collector or Tracker?

On Mon, 17 Jul 2000, Shane Hathaway wrote:
> This is an excellent bug analysis.  I suggest that we create a new
> PyCallable_Check function that works in the presence of wrappers,
> perhaps called PyCallable_CheckW().  If it is placed in Acquisition.c
> then cDocumentTemplate.c will have to #include "Acquisition.h".  Then
> we need to replace PyCallable_Check in probably more than just
> cDocumentTemplate.
> 
> Shane
> 
> Dieter Maurer wrote:
> > 
> > Recently, several posters have reported strange "AttributeError __call__"
> > exceptions.
> > 
> > The most precise was a report by Oleg Broytmann:
> > 
> >    /index_html                          DTML Document
> >       <dtml-var standard_html_header>
> >    /standard_html_header                DTML Method
> >       <dtml-with sub></dtml-with>
> >    /sub                                 Folder
> > 
> >   When he calls "/sub/index_html", he gets this
> >   "AttributeError __call__" for "sub".
> > 
> >   He observed the problem on Zope 2.1.4 and 2.2a4.
> > 
> > I partially analysed this problem report under Zope 2.1.6:
> > 
> >   In "MM_cget", "sub" is retrieved as an "ImplicitAcquirerWrapper"
> >   (correct).
> > 
> >   In line 373, however, "PyCallable_Check(sub)" returned "1",
> >   which is probably wrong, because a folder is not callable.
> >   The "ImplicitAcquirerWrapper"'s "tp_call" mislead
> > "PyCallable_Check".
> > 
> >   In line 376, the attribute "py_isDocTemp" is looked up
> >   and succeeds. Therefore, the folder "sub" is seen as
> >   a Document Template, which definitely is not true.
> >   The following call fails because it arrives at CallMethodO in
> >   "Acquisition.c:119" which looks for a non-excisting "__call__" method.
> > 
> > Dieter

Oleg.            (All opinions are mine and not of my employer)
---- 
    Oleg Broytmann      Foundation for Effective Policies      phd@phd.russ.ru
           Programmers don't die, they just GOSUB without RETURN.