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

Reply via email to