[patches] constification round #3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2018-06-07 at 05:01 +0100, jnqnfe at gmail.com wrote:
> API constification set #3
> 
> Some API functions perform validation routines which may modify the
> 'error' attribute of a context object. For API functions where the
> "primary" object is not a context object, and the object holds a non-
> const context pointer, this internal mechanism could be successfully
> hidden - such functions were constified in my previous two patch sets.
> 
> However, some functions, namely those related directly to context
> objects, had to be passed over previously. These could not be
> constified because the validation routines accessed the context object
> directly to change the error attribute.
> 
> This patch set addresses this shortcoming.
> 
> Firstly the patch set moves the context's error attribute behind a
> pointer. The validation routines are then changed to store the error
> value via this pointer. That then allows a collection of further API
> functions to be constified.
> 
> (actually pa_context_errno and the two rttime ones could have been done
> previously on second inspection)
> 
> Although the indirection of the error attribute is obviously ever so
> slightly worse off for efficiency, it is surely worth the price. After
> all, the error setting of the validation checks is just an artifact of
> an internal mechanism and should not be allowed to influence the public
> API like it currently does.

Thanks! I applied patches 1 and 4. Patches 2 and 3 seem unnecessarily
complicated, wouldn't it be better to just constify
pa_context_set_error()?

I altered the commit message of patch 1, because "See email discussion"
seemed like something that could be very annoying to read in the commit
message e.g. ten years from now. I replaced it with a short summary of
the justification for the change.

-- 
Tanu

https://liberapay.com/tanuk
https://www.patreon.com/tanuk


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux