]>
Commit | Line | Data |
---|---|---|
2e5d6664 JR |
1 | diff -up tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx.zrle-crash tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx |
2 | --- tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx.zrle-crash 2013-07-01 13:41:59.000000000 +0100 | |
3 | +++ tigervnc-1.3.0/common/rfb/ZRLEEncoder.cxx 2013-12-12 17:30:48.510007365 +0000 | |
4 | @@ -55,16 +55,19 @@ Encoder* ZRLEEncoder::create(SMsgWriter* | |
5 | } | |
6 | ||
7 | ZRLEEncoder::ZRLEEncoder(SMsgWriter* writer_) | |
8 | - : writer(writer_), zos(0,0,zlibLevel) | |
9 | + : writer(writer_) | |
10 | { | |
11 | if (sharedMos) | |
12 | mos = sharedMos; | |
13 | else | |
14 | mos = new rdr::MemOutStream(129*1024); | |
15 | + | |
16 | + zos = new rdr::ZlibOutStream(0, 0, zlibLevel); | |
17 | } | |
18 | ||
19 | ZRLEEncoder::~ZRLEEncoder() | |
20 | { | |
21 | + delete zos; | |
22 | if (!sharedMos) | |
23 | delete mos; | |
24 | } | |
25 | @@ -78,10 +81,10 @@ bool ZRLEEncoder::writeRect(const Rect& | |
26 | ||
27 | switch (writer->bpp()) { | |
28 | case 8: | |
29 | - wroteAll = zrleEncode8(r, mos, &zos, imageBuf, maxLen, actual, ig); | |
30 | + wroteAll = zrleEncode8(r, mos, zos, imageBuf, maxLen, actual, ig); | |
31 | break; | |
32 | case 16: | |
33 | - wroteAll = zrleEncode16(r, mos, &zos, imageBuf, maxLen, actual, ig); | |
34 | + wroteAll = zrleEncode16(r, mos, zos, imageBuf, maxLen, actual, ig); | |
35 | break; | |
36 | case 32: | |
37 | { | |
38 | @@ -94,16 +97,16 @@ bool ZRLEEncoder::writeRect(const Rect& | |
39 | if ((fitsInLS3Bytes && pf.isLittleEndian()) || | |
40 | (fitsInMS3Bytes && pf.isBigEndian())) | |
41 | { | |
42 | - wroteAll = zrleEncode24A(r, mos, &zos, imageBuf, maxLen, actual, ig); | |
43 | + wroteAll = zrleEncode24A(r, mos, zos, imageBuf, maxLen, actual, ig); | |
44 | } | |
45 | else if ((fitsInLS3Bytes && pf.isBigEndian()) || | |
46 | (fitsInMS3Bytes && pf.isLittleEndian())) | |
47 | { | |
48 | - wroteAll = zrleEncode24B(r, mos, &zos, imageBuf, maxLen, actual, ig); | |
49 | + wroteAll = zrleEncode24B(r, mos, zos, imageBuf, maxLen, actual, ig); | |
50 | } | |
51 | else | |
52 | { | |
53 | - wroteAll = zrleEncode32(r, mos, &zos, imageBuf, maxLen, actual, ig); | |
54 | + wroteAll = zrleEncode32(r, mos, zos, imageBuf, maxLen, actual, ig); | |
55 | } | |
56 | break; | |
57 | } | |
58 | diff -up tigervnc-1.3.0/common/rfb/ZRLEEncoder.h.zrle-crash tigervnc-1.3.0/common/rfb/ZRLEEncoder.h | |
59 | --- tigervnc-1.3.0/common/rfb/ZRLEEncoder.h.zrle-crash 2013-07-01 13:42:01.000000000 +0100 | |
60 | +++ tigervnc-1.3.0/common/rfb/ZRLEEncoder.h 2013-12-12 17:30:48.510007365 +0000 | |
61 | @@ -45,7 +45,7 @@ namespace rfb { | |
62 | private: | |
63 | ZRLEEncoder(SMsgWriter* writer); | |
64 | SMsgWriter* writer; | |
65 | - rdr::ZlibOutStream zos; | |
66 | + rdr::ZlibOutStream* zos; | |
67 | rdr::MemOutStream* mos; | |
68 | static rdr::MemOutStream* sharedMos; | |
69 | static int maxLen; |