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>