[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.