summaryrefslogtreecommitdiff
path: root/core/src/fxcodec/jbig2/JBig2_SymbolDict.h
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2015-10-09 13:51:05 -0700
committerLei Zhang <thestig@chromium.org>2015-10-09 13:51:05 -0700
commit3acb1ef909a22368507ed13817c4988c818e3aee (patch)
treec5fcef7a3f30562c2bfc6118c818eb120211687c /core/src/fxcodec/jbig2/JBig2_SymbolDict.h
parentfd751f28cecce61ab36038799043639d570e0b26 (diff)
downloadpdfium-3acb1ef909a22368507ed13817c4988c818e3aee.tar.xz
Sanitize CJBig2_SymbolDict's memory usage.chromium/2534chromium/2533chromium/2532
- Use std::vector<JBig2ArithCtx> instead of storing pointers to arrays. - Make CJBig2_SymbolDict's members private with accessors. - Use std::vector<JBig2ArithCtx> in related places. - Steal Chromium's vector_as_array() and use it as an adaptor as needed. BUG=514891 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1388203003 .
Diffstat (limited to 'core/src/fxcodec/jbig2/JBig2_SymbolDict.h')
-rw-r--r--core/src/fxcodec/jbig2/JBig2_SymbolDict.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/core/src/fxcodec/jbig2/JBig2_SymbolDict.h b/core/src/fxcodec/jbig2/JBig2_SymbolDict.h
index 577bfbc2f2..6ff4c2efe2 100644
--- a/core/src/fxcodec/jbig2/JBig2_SymbolDict.h
+++ b/core/src/fxcodec/jbig2/JBig2_SymbolDict.h
@@ -7,12 +7,14 @@
#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_
#define CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_
+#include <vector>
+
#include "../../../../third_party/base/nonstd_unique_ptr.h"
#include "../../../include/fxcrt/fx_basic.h"
+#include "JBig2_ArithDecoder.h"
#include "JBig2_List.h"
class CJBig2_Image;
-struct JBig2ArithCtx;
class CJBig2_SymbolDict {
public:
@@ -27,12 +29,19 @@ class CJBig2_SymbolDict {
size_t NumImages() const { return m_SDEXSYMS.size(); }
CJBig2_Image* GetImage(size_t index) const { return m_SDEXSYMS.get(index); }
- public:
- FX_BOOL m_bContextRetained;
- JBig2ArithCtx* m_gbContext;
- JBig2ArithCtx* m_grContext;
+ const std::vector<JBig2ArithCtx>& GbContext() const { return m_gbContext; }
+ const std::vector<JBig2ArithCtx>& GrContext() const { return m_grContext; }
+
+ void SetGbContext(const std::vector<JBig2ArithCtx>& gbContext) {
+ m_gbContext = gbContext;
+ }
+ void SetGrContext(const std::vector<JBig2ArithCtx>& grContext) {
+ m_grContext = grContext;
+ }
private:
+ std::vector<JBig2ArithCtx> m_gbContext;
+ std::vector<JBig2ArithCtx> m_grContext;
CJBig2_List<CJBig2_Image> m_SDEXSYMS;
};