[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Possible Zlib Bug

jed.hurt@gmail.com

9/10/2007 12:28:00 AM

I originally posted this message to core as I assumed that it would be
the mailing list with
the most knowledge of Ruby's Zlib library, but received no reply, so
I'm posting it again here.
====================================================

I'm porting SWX PHP ( swxformat.org ) to Ruby (
http://rubyforge.org/pro... ). SWX is a data exchange format—a
replacement for Flash Remoting, SOAP, et al. The idea is to assemble
Flash SWF files by converting Ruby objects (hashes, array, strings,
integers, etc.) to SWF bytecode.

SWF files support compression using ZLib, and so I'm implementing
compression using
Ruby's ZLib library.

As I'm porting SWX PHP to Ruby, I am able to generate a SWF file using
SWX PHP to see what I need to generate in rSWX ( my port ).

There seems to be a bug in Ruby's ZLib implementation that creates a
different header and trailer than PHP's gzcompress() (the function
used to compress in SWX PHP).

Here is the bytecode of two SWF files containing the same data (one
generated with SWX PHP and the other generated with rSWX):
http://pastie.cabo...

I've highlighted the discrepant parts of the two files (Please note
that the first 8 bits of a compressed SWF file are left uncompressed,
thus the header of the compressed section of the file starts on the
second line of the pastied result).

And, needless to say, the compressed SWF file generated with SWX PHP
works, and the one generated with rSWX does not.

I know very little about compression or Zlib so I'm quite lost at this
point. I've tried to make this post as thorough as possible so that
someone with a greater knowledge of hex bytecode could help me fix the
issue without much effort. If I could post anything else to make it
easier to find the issue, please let me know and I'll be happy to do
it.

2 Answers

yermej

9/10/2007 1:54:00 AM

0

On Sep 9, 7:27 pm, "Jed Hurt" <jed.h...@gmail.com> wrote:
> I originally posted this message to core as I assumed that it would be
> the mailing list with
> the most knowledge of Ruby's Zlib library, but received no reply, so
> I'm posting it again here.
> ====================================================
>
> I'm porting SWX PHP ( swxformat.org ) to Ruby (http://rubyforge.org/pro...). SWX is a data exchange format-a
> replacement for Flash Remoting, SOAP, et al. The idea is to assemble
> Flash SWF files by converting Ruby objects (hashes, array, strings,
> integers, etc.) to SWF bytecode.
>
> SWF files support compression using ZLib, and so I'm implementing
> compression using
> Ruby's ZLib library.
>
> As I'm porting SWX PHP to Ruby, I am able to generate a SWF file using
> SWX PHP to see what I need to generate in rSWX ( my port ).
>
> There seems to be a bug in Ruby's ZLib implementation that creates a
> different header and trailer than PHP's gzcompress() (the function
> used to compress in SWX PHP).
>
> Here is the bytecode of two SWF files containing the same data (one
> generated with SWX PHP and the other generated with rSWX):http://pastie.cabo...
>
> I've highlighted the discrepant parts of the two files (Please note
> that the first 8 bits of a compressed SWF file are left uncompressed,
> thus the header of the compressed section of the file starts on the
> second line of the pastied result).
>
> And, needless to say, the compressed SWF file generated with SWX PHP
> works, and the one generated with rSWX does not.
>
> I know very little about compression or Zlib so I'm quite lost at this
> point. I've tried to make this post as thorough as possible so that
> someone with a greater knowledge of hex bytecode could help me fix the
> issue without much effort. If I could post anything else to make it
> easier to find the issue, please let me know and I'll be happy to do
> it.

I don't know much about zlib, but I did notice one thing in your
pastie example. This:

swx_file.slice!(0..8)

removes 9 bytes from the string. Maybe that should be:

swx_file.slice!(0,8), or
swx_file.slice!(0..7)

?

Jeremy

jed.hurt@gmail.com

9/10/2007 2:19:00 AM

0

Well, I'm thoroughly embarrassed. Maybe that's why no one would take
me seriously on the core mailing list. Case closed.

On 9/9/07, yermej@gmail.com <yermej@gmail.com> wrote:
> On Sep 9, 7:27 pm, "Jed Hurt" <jed.h...@gmail.com> wrote:
> > I originally posted this message to core as I assumed that it would be
> > the mailing list with
> > the most knowledge of Ruby's Zlib library, but received no reply, so
> > I'm posting it again here.
> > ====================================================
> >
> > I'm porting SWX PHP ( swxformat.org ) to Ruby (http://rubyforge.org/pro...). SWX is a data exchange format-a
> > replacement for Flash Remoting, SOAP, et al. The idea is to assemble
> > Flash SWF files by converting Ruby objects (hashes, array, strings,
> > integers, etc.) to SWF bytecode.
> >
> > SWF files support compression using ZLib, and so I'm implementing
> > compression using
> > Ruby's ZLib library.
> >
> > As I'm porting SWX PHP to Ruby, I am able to generate a SWF file using
> > SWX PHP to see what I need to generate in rSWX ( my port ).
> >
> > There seems to be a bug in Ruby's ZLib implementation that creates a
> > different header and trailer than PHP's gzcompress() (the function
> > used to compress in SWX PHP).
> >
> > Here is the bytecode of two SWF files containing the same data (one
> > generated with SWX PHP and the other generated with rSWX):http://pastie.cabo...
> >
> > I've highlighted the discrepant parts of the two files (Please note
> > that the first 8 bits of a compressed SWF file are left uncompressed,
> > thus the header of the compressed section of the file starts on the
> > second line of the pastied result).
> >
> > And, needless to say, the compressed SWF file generated with SWX PHP
> > works, and the one generated with rSWX does not.
> >
> > I know very little about compression or Zlib so I'm quite lost at this
> > point. I've tried to make this post as thorough as possible so that
> > someone with a greater knowledge of hex bytecode could help me fix the
> > issue without much effort. If I could post anything else to make it
> > easier to find the issue, please let me know and I'll be happy to do
> > it.
>
> I don't know much about zlib, but I did notice one thing in your
> pastie example. This:
>
> swx_file.slice!(0..8)
>
> removes 9 bytes from the string. Maybe that should be:
>
> swx_file.slice!(0,8), or
> swx_file.slice!(0..7)
>
> ?
>
> Jeremy
>
>
>