On 07/21/14 14:35, Dmitry Yemanov wrote:
> 21.07.2014 13:13, Alex Peshkoff wrote:
>
>>> We were using system size_t until Nickolay had committed FB_SIZE_T a few
>>> days ago in attempt to avoid warnings. The bad thing is that it wasnt't
>>> discussed.
>> Not too late to begin discussion now.
>> I would sooner agree with the change and Nickolay's arguments to do it
>> (present in comment in h-file) no matter of the fact that it would be
>> good idea to check builds better after such changes.
> Nickolay's comment is absolutely correct. However:
>
> 1) The root of the warnings issue was that size_t actively used in our
> classes library was often compared and/or assigned to/from

Assignment from shorter var-s also causes problems? Strange for me.

> shorter
> SLONG/ULONG variables. And the compiler was correctly showing where our
> code is not ready for big (>4GB) objects. Making both ULONG and
> FB_SIZE_T the same [smaller] size is an obvious solution, but strictly
> speaking it just hides the issue instead of fixing it. If one day we
> want to support objects bigger than 4GB, one would need to enable
> FB_USE_SIZE_T and start from scratch.
>
> This is not really an objection as long as FB_USE_SIZE_T is preserved,
> rather just a comment of mine.
>
> 2) Also, it introduces more artificial datatypes than we had. I remember
> we were dicussing an intention to minimize artificial datatypes in favor
> of native compiler ones in all places that are not ODS/API related. New
> API already does that. So I see the patch as a step backward in this
> regard. And I really hate seeing/writing typedefs in such trivial places
> like counter-based loops.

Agreed. Even use of SLONG/ULONG in such loops looks ugly. I.e. we have 
to choose best from 2 bad variants? :)
I think we should wait for Nickolay's mind before doing some big changes.

> 3) If size_t was used in any public interface, then IMHO it was a
> mistake. Looking at the new API, unsigned int should be used instead.
> IMO, FB_SIZE_T must be a private typedef and thus should be moved from
> types_pub.h to fb_types.h.

The only such place is in circularAlloc()., and it can and should be 
changed to unsigned. Will do.


------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to