[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1663780 - /subversion/trunk/subversion/include/svn_hash.h

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 4 Mar 2015 10:07:59 +0000

Branko and Bert, I'm still not sure I understand what is needed for the Windows build.

>>> -#ifdef SVN_DEBUG
>>>  /* In debug builds, the svn_hash_gets macro forwards the parameters
>>>  * through this function in order to have parameter type checking,
>>>  * particularly for the key. The svn_hash_sets macro gets parameter
>>> @@ -247,7 +246,6 @@ svn_hash_from_cstring_keys(apr_hash_t **
>>>  */
>>>  void *
>>>  svn_hash__gets(apr_hash_t *ht, const char *key);
>>> -#endif
>>
> Branko Čibej wrote:
>> No, that's wrong. The should not be available in non-SVN_DEBUG mode
>> because nobody should be calling svn_hash__gets directly. All calls
>> should come from the expansion of the svn_hash_gets macro, which only
>> expands to the call in SVN_DEBUG mode.
>>
>> The problem with the "missing prototype" warning should be solved in the
>> same way we solve it for error tracing (see the definition of
>> SVN_ERR__TRACING in svn_error.h and how it's used in libsvn_subr/error.c).

> Bert Huijben wrote:

>> As noted on irc we have one .def file that is used for release and
>> maintenance builds. This generated file has all the function names
>> that are published by a .DLL.
>>
>> If the function is not in the list, we can’t use it in maintainer
>> builds from libraries != libsvn_subr.

We do want to use svn_hash__[sg]ets in maintainer builds from all libs, so you're saying I have to put it in that list. (Where is the list?)

>> And if it is in the list, it
>> must be available or the linker will return an error in release mode.

So its definition should not be inside #ifdef. OK, it's not.

Branko Čibej wrote:
> But the .def file generator doesn't look for #ifdef DEBUG blocks, right.
> Otherwise we'd have had this problem for ages with svn_err__locate
> (which, fwiw, is not declared within '#idfef DEBUG', as I implicitly
> stated [...]).

I can't find svn_error__trace mentioned inside any files in (root dir) or build/**.

The svn_error__trace definition is unconditional. (It has an #ifdef inside it, but that's not the main concern.)

The svn_error__trace declaration is inside #ifdef SVN_DEBUG (effectively; actually inside #ifdef SVN_ERR__TRACING which is defined iff SVN_DEBUG).

But Bert said yesterday[1] I need to remove the #ifdef from the declaration, at least that's how I understood it so I did so in r1663780.

Now I don't know which is correct (#ifdef or not) and I understand I do need to add svn_hash__[gs]ets to a list of exports.

Can you clarify further what still needs to be done, if anything, please?

- Julian

[1] http://colabti.org/irclogger/irclogger_log/svn-dev?date=2015-03-03#l77
Received on 2015-03-04 11:09:53 CET

This is an archived mail posted to the Subversion Dev mailing list.