On 04.09.2013 22:18, Eric Blake wrote: > On 09/04/2013 02:03 PM, Jim Fehlig wrote: >>> >>> Yeah, good question. I found a few occurrences of regcomp() and friends >>> throughout the sources and most seem to do regfree() even when regcomp() >>> fails. The man page is not very clear, but the notes on regfree() >>> suggest it is not necessary >>> >>> POSIX Pattern Buffer Freeing >>> Supplying regfree() with a precompiled pattern buffer, preg will >>> free the memory allocated to the pattern buffer by the compiling >>> process, regcomp(). >>> >>> But does the pattern buffer contain any allocated memory when regcomp() >>> fails? The notes on regcomp() are not clear about this. > > Thankfully, we can read the source :) > > In glibc, regcomp assigns into preg, but is careful to undo any > allocation on failure; it is also careful to make regfree() a no-op on > an already-freed buffer (whether by calling regfree() twice in a row, or > using it on preg after a failed regcomp). Gnulib copies this behavior. > But it is not universally standard: Question then is: if regcomp(®, ...) fails, reg == NULL, right? But passing the @reg to regerror: regerror(errcode, ®, ...) doesn't make much sense then. It can make, if regcomp would free all mem allocated, but set @reg to different values (each of them representing different cause of error). If that is the case, <irony>this is what I call the design!</irony> Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list