Re: [Firebird-devel] IMessageMetadata::get/setLength for VARCHAR

2020-12-09 Thread Dimitry Sibiryakov
09.12.2020 18:31, Dimitry Sibiryakov wrote:   Remember me, please, when build metadata for a record should length value provided to setLength() (and returned by getLength()) to be two bytes bigger when constructing VARCHAR field? Self-answer: no, get/setLength() work with exactly declared

[Firebird-devel] IMessageMetadata::get/setLength for VARCHAR

2020-12-09 Thread Dimitry Sibiryakov
Hello All. Remember me, please, when build metadata for a record should length value provided to setLength() (and returned by getLength()) to be two bytes bigger when constructing VARCHAR field? -- WBR, SD. Firebird-Devel mailing list, web interface at

Re: [Firebird-devel] IStatus::setErrors() to "no errors"

2020-12-09 Thread Alex Peshkoff via Firebird-devel
On 12/9/20 2:31 PM, Dimitry Sibiryakov wrote: 09.12.2020 12:23, Alex Peshkoff via Firebird-devel wrote: That depends upon getState() internals, is not it? :)   Yes. Firebird implementation recognizes zero error code in getState() so I wonder if it is a specs' requirement or such recognition

Re: [Firebird-devel] Errors vector lifetime

2020-12-09 Thread Dimitry Sibiryakov
09.12.2020 12:41, Alex Peshkoff via Firebird-devel wrote: setWarnings() does not use clear(), it's using save() internal call which does invalidates memory in the very end and therefore is safe Ah, I see. I looked at wrong save() overload. -- WBR, SD. Firebird-Devel mailing list, web

Re: [Firebird-devel] Errors vector lifetime

2020-12-09 Thread Alex Peshkoff via Firebird-devel
On 12/9/20 2:28 PM, Dimitry Sibiryakov wrote: 09.12.2020 12:21, Alex Peshkoff via Firebird-devel wrote:   During such self assignment returned pointer can be invalidated by setErrors() code before using input parameter which may cause crash or wrong result. Builtin implementation works

Re: [Firebird-devel] IStatus::setErrors() to "no errors"

2020-12-09 Thread Dimitry Sibiryakov
09.12.2020 12:23, Alex Peshkoff via Firebird-devel wrote: That depends upon getState() internals, is not it? :) Yes. Firebird implementation recognizes zero error code in getState() so I wonder if it is a specs' requirement or such recognition can be performed in other places. -- WBR,

Re: [Firebird-devel] Errors vector lifetime

2020-12-09 Thread Dimitry Sibiryakov
09.12.2020 12:21, Alex Peshkoff via Firebird-devel wrote:   During such self assignment returned pointer can be invalidated by setErrors() code before using input parameter which may cause crash or wrong result. Builtin implementation works fine with your particular sample. Not quite so.

Re: [Firebird-devel] IStatus::setErrors() to "no errors"

2020-12-09 Thread Alex Peshkoff via Firebird-devel
On 12/8/20 8:20 PM, Dimitry Sibiryakov wrote: 08.12.2020 17:36, Alex Peshkoff via Firebird-devel wrote:   Should a custom implementation of IStatus recognize and ignore a special case when GDS error code is set to zero using parameter ( isc_arg_gds, 0, isc_arg_end } or error with zero code is

Re: [Firebird-devel] Errors vector lifetime

2020-12-09 Thread Alex Peshkoff via Firebird-devel
On 12/9/20 2:03 PM, Dimitry Sibiryakov wrote: 18.11.2020 17:49, Dimitry Sibiryakov wrote:    How long pointer returned from IStatus::getErrors() is supposed to be valid?   I think I found a weird case. In Y-valve there is code like this:   status.setErrors(status.getErrors());   During such

Re: [Firebird-devel] Errors vector lifetime

2020-12-09 Thread Dimitry Sibiryakov
18.11.2020 17:49, Dimitry Sibiryakov wrote:   How long pointer returned from IStatus::getErrors() is supposed to be valid? I think I found a weird case. In Y-valve there is code like this: status.setErrors(status.getErrors()); During such self assignment returned pointer can be