Hi Bert,

> -----Original Message-----
> From: Bert Huijben [mailto:b...@qqmail.nl]
> Sent: Monday, 24 October, 2011 8:22 PM
> To: Joel Low; 'Subversion Developers' List'
> Cc: Mark Phippard
> Subject: RE: Infinite loop on when using svn blame
> 
> > -----Original Message-----
> > From: Joel Low [mailto:j...@joelsplace.sg]
> > Sent: zondag 23 oktober 2011 10:15
> > To: Subversion Developers' List (dev@subversion.apache.org)
> > Subject: RE: Infinite loop on when using svn blame
> >
> > > -----Original Message-----
> > > From: Joel Low [mailto:j...@joelsplace.sg]
> > > Sent: Sunday, 23 October, 2011 4:05 PM
> > > To: Subversion Developers' List (dev@subversion.apache.org)
> > > Subject: Infinite loop on when using svn blame
> > >
> > > Hello List,
> > >
> > > I've got an infinite loop when running svn blame over file:/// on
> my
> > > own SVN binaries (Windows, x64, VS 2008)
> > >
> > > I'm not sure if it is caused by my repository (it's public -- the
> > > Eraser SourceForge repository, repository can be rsynced from
> > > SourceForge servers) Trying to run blame from TortoiseSVN seems to
> work
> > > fine, so I did some debugging.
> > >
> > > It seems that there's an infinite loop in find_identical_prefix
> > > (diff_file.c:379, svn 1.7.1 tag), specifically within the ifdefs in
> > > SVN_UNALIGNED_ACCESS_IS_OK between lines 417 and 455. I disabled
> > the
> > > whole block since the comment in svn_types.h details that
> > > SVN_UNALIGNED_ACCESS_IS_OK is an optimisation opportunity define
> > and
> > > rebuilt; the blame runs successfully then.
> >
> > Sorry for the noise. The definition of apr_uintptr_t is important:
> WIN32
> is
> > defined in the MSVC project files, but APR detects x64 purely by
> defines
> (in
> > this case WIN64) which the project files do not define. Defining
> WIN64
> (and
> > WIN32) in all projects seems to have fixed the problem.
> 
> Which apr version did you use?
> 
> Apr 1.3.X checks for WIN64, but 1.4.X checks for _WIN64 and WIN64.

I built against Apr 1.4.5 and Apr-util 1.3.12.

> 
> I think we don't define WIN64 in our build, but _WIN64 is automatically
> added by the Microsoft C++ compiler for x64 builds.
> 
>       Bert

Yes, the generated project files only define WIN32. In my build of APR, apr.h 
defines:

#ifdef WIN64
#define APR_SIZEOF_VOIDP   8
#else
#define APR_SIZEOF_VOIDP   4
#endif

A quick search around the APR source tree (I loaded up the Apache HTTPd 
solution, of which libapr and libapr-util are projects in) revealed no 
references to _WIN64.

Reply via email to