Re: Bug in g_message() with long lines ?



On Thu, 27 Apr 2000, Tim Janik wrote:

> On 26 Apr 2000, Owen Taylor wrote:
> 
> > 
> > Guy Slater <guy@ebi.ac.uk> writes:
> > 
> > > Hi,
> > > 
> > > I'm just starting to use glib (nice library - I wish I'd known
> > > about it a long time ago).
> > > 
> > > I think there may be a bug in glib when g_message() is used
> > > to report long strings.  (Strings here are often DNA,
> > > so can be very long).
> > > 
> > > This one had me puzzled for a while as I was using g_message()
> > > to print debugging info.  The problem also seems to be a bit platform
> > > specific.
> > 
> > Well, what you are basically discovering is that the g_log()
> > functions are limited to a fixed size buffer. The reason for
> > this is that they may be called in out-of-memory situations,
> > so can't rely on allocating memory.
> > 
> > I think this probably could be addressed in a couple of ways:
> > 
> >  1) Allow memory to be allocated for non-fatal messages, and
> >     only use fixed size buffers for fatal messages.
> 
> right.
> 
> >  2) Try allocating the necessary memory with malloc(), and
> >     only if that fails fall back to the static buffer.
> 
> yeah, as soon as we got g_try_malloc().

Or ...

3) Could "(message truncated)" or somesuch
   be copied to the end of the buffer ?

4) Could this behaivour be mentioned in the documentation ;)

> > (Printing out long DNA sequences in user messages seems a little
> > odd to me, so I'll mention that g_print(), g_message(), etc,
> > really aren't meant as replacements for printf() - they are
> > just meant for redirectable logging of errors and warnings.)
>
> i second that, except for g_print() which is in fact a printf() replacement.
> it doesn't go through g_logv() and can handle very long strings just fine.

Yes, fair point.  Thanks very much for the swift replies.

Guy.
--



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