[webkit-reviews] review denied: [Bug 47896] [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk : [Attachment 71150] Patch to use GCharsetConverter

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Oct 20 09:39:04 PDT 2010


Martin Robinson <mrobinson at webkit.org> has denied Carlos Garcia Campos
<cgarcia at igalia.com>'s request for review:
Bug 47896: [GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk
https://bugs.webkit.org/show_bug.cgi?id=47896

Attachment 71150: Patch to use GCharsetConverter
https://bugs.webkit.org/attachment.cgi?id=71150&action=review

------- Additional Comments from Martin Robinson <mrobinson at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=71150&action=review

Great patch! Needs a few fixes, but I like where this is headed.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:322
> +    , m_iconvDecoder(0)
> +    , m_iconvEncoder(0)

No need to initialize these. The default constructor sets the RefPtr to 0.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:359
> +    gsize bytesRead, bytesWritten;
> +    const gchar *input = bytes;

bytesRead and bytesWritten should be initialized and on separate lines. Should
be const gchar* input = bytes.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:362
> +    int flags = !length ?  G_CONVERTER_INPUT_AT_END : G_CONVERTER_NO_FLAGS;

There's an extra space after ?

> WebCore/platform/text/gtk/TextCodecGtk.cpp:392
> +	   GOwnPtr<GError> err;
> +	   GConverterResult res;
> +
> +	   res = g_converter_convert(G_CONVERTER(m_iconvDecoder.get()),
> +				     input,
> +				     inputLength,
> +				     buffer,
> +				     sizeof(buffer),
> +				     (GConverterFlags)flags,
> +				     &bytesRead,
> +				     &bytesWritten,
> +				     &err.outPtr());

Please change "err" to "error".

No need to define and declare res separately. In general, I like this style of
indenting, but in this case I think that it makes the method harder to read,
because it is so long. Perhaps it could be like this?

GConverterResult res = g_converter_convert(G_CONVERTER(m_iconvDecoder.get()),
input, inputLength
					   buffer, sizeof(buffer), ...

I think you should also use a static_cast for flags.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:399
> +	       if (g_error_matches(err.get(), G_IO_ERROR,
G_IO_ERROR_PARTIAL_INPUT)) {
> +		   memcpy(m_bufferedBytes, input, inputLength);
> +		   m_numBufferedBytes = inputLength;

You might want to also leave a comment here about why this might happen and
what the strategy is for dealing with it, since it's not obvious from an
initial inspection.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:440
> +    gsize bytesRead, bytesWritten;
> +    const gchar *input = reinterpret_cast<const char*>(characters);

bytesRead and bytesWritten should be initialized and on separate lines. Careful
with the * again.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:444
>      GOwnPtr<GError> err;

Probably a good idea to get rid of this abbreviation now.

> WebCore/platform/text/gtk/TextCodecGtk.cpp:458
> +	   res = g_converter_convert(G_CONVERTER(m_iconvEncoder.get()),
> +				     input,
> +				     inputLength,
> +				     buffer,
> +				     sizeof(buffer),
> +				     G_CONVERTER_INPUT_AT_END,
> +				     &bytesRead,
> +				     &bytesWritten,
> +				     &err.outPtr());

Same comment here as above.


More information about the webkit-reviews mailing list