Hi Werner,

as far as I see there is no reason to immutable assert.

Alex


> Am 21.12.2016 um 15:39 schrieb Werner Coetzee <werner.coet...@clickatell.com>:
> 
> Hi
>  
> Why does the octstr_cat(Octstr *ostr1, Octstr *ostr2) function in 
> gwlib/octstr.c require that ostr1 be non-immutable?
> It contains:
> gw_assert(!ostr1->immutable);
>  
> I can't see any reason for the requirement since ostr1 is never modified in 
> octstr_cat() so to me octstr_cat() should work perfectly fine/safely if ostr1 
> is immutable.
> And since the requirement is there for ostr1, why is it not there for ostr2?  
> There's no difference in the way that ostr1 and ostr2 is used.
>  
> I now have to resort to much slower functions such as octstr_format or 
> octstr_insert or octstr_append to get the same result.
>  
> My use case:
>  
> void myfunc(const Octstr *param) // param should/will not be modified
> {
>     Octstr *newvar = octstr_cat(octstr_imm("PREFIX"), param);  // this will 
> panic
>     // Do something with newvar
> }
>  
> So my work around is newvar = octstr_format("%s%S", "PREFIX", param); but 
> could also have newvar = octstr_create("PREFIX"); octstr_append(newvar, 
> param); or even newvar = octstr_duplicate(param); octstr_insert(newvar, 
> octstr_imm("PREFIX"), 0);
>  
> I would really appreciate it if someone could shed some light on this, and if 
> the powers that be agree with me remove the assertion?
>  
> Thanks in advance
> Werner
>  
> 
>   
> <image1a2972.PNG>     
> Werner Coetzee
> Senior Message Engine Engineer
> <imagea0c2e2.PNG>
>  
> T  +27 21 910 7700
> werner.coet...@clickatell.com <mailto:werner.coet...@clickatell.com>
> www.clickatell.com <https://www.clickatell.com/>
> <imagedf67b0.PNG>

Reply via email to