Skip to content

Commit ca6d15e

Browse files
fancycodehhrutter
authored andcommitted
Avoid pointer receiver and don't call PDFString of lazy objects internally.
1 parent 91619f0 commit ca6d15e

File tree

4 files changed

+21
-12
lines changed

4 files changed

+21
-12
lines changed

pkg/pdfcpu/model/dereference.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func (xRefTable *XRefTable) indRefToObject(ir *types.IndirectRef, decodeLazy boo
7676

7777
xRefTable.CurObj = int(ir.ObjectNumber)
7878

79-
if l, ok := entry.Object.(*types.LazyObjectStreamObject); ok && decodeLazy {
79+
if l, ok := entry.Object.(types.LazyObjectStreamObject); ok && decodeLazy {
8080
ob, err := l.DecodedObject(context.TODO())
8181
if err != nil {
8282
return nil, err

pkg/pdfcpu/read.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2134,7 +2134,7 @@ func dereferencedObject(c context.Context, ctx *model.Context, objNr int) (types
21342134
}
21352135

21362136
entry.Object = o
2137-
} else if l, ok := entry.Object.(*types.LazyObjectStreamObject); ok {
2137+
} else if l, ok := entry.Object.(types.LazyObjectStreamObject); ok {
21382138
o, err := l.DecodedObject(c)
21392139
if err != nil {
21402140
return nil, errors.Wrapf(err, "dereferencedObject: problem dereferencing object %d", objNr)

pkg/pdfcpu/types/streamdict.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ type LazyObjectStreamObject struct {
116116
}
117117

118118
func NewLazyObjectStreamObject(osd *ObjectStreamDict, startOffset, endOffset int, decodeFunc DecodeLazyObjectStreamObjectFunc) Object {
119-
return &LazyObjectStreamObject{
119+
return LazyObjectStreamObject{
120120
osd: osd,
121121
startOffset: startOffset,
122122
endOffset: endOffset,
@@ -125,8 +125,8 @@ func NewLazyObjectStreamObject(osd *ObjectStreamDict, startOffset, endOffset int
125125
}
126126
}
127127

128-
func (l *LazyObjectStreamObject) Clone() Object {
129-
return &LazyObjectStreamObject{
128+
func (l LazyObjectStreamObject) Clone() Object {
129+
return LazyObjectStreamObject{
130130
osd: l.osd,
131131
startOffset: l.startOffset,
132132
endOffset: l.endOffset,
@@ -137,20 +137,20 @@ func (l *LazyObjectStreamObject) Clone() Object {
137137
}
138138
}
139139

140-
func (l *LazyObjectStreamObject) PDFString() string {
141-
data, err := l.getData()
140+
func (l LazyObjectStreamObject) PDFString() string {
141+
data, err := l.GetData()
142142
if err != nil {
143143
panic(err)
144144
}
145145

146146
return string(data)
147147
}
148148

149-
func (l *LazyObjectStreamObject) String() string {
149+
func (l LazyObjectStreamObject) String() string {
150150
return l.PDFString()
151151
}
152152

153-
func (l *LazyObjectStreamObject) getData() ([]byte, error) {
153+
func (l *LazyObjectStreamObject) GetData() ([]byte, error) {
154154
if err := l.osd.Decode(); err != nil {
155155
return nil, err
156156
}
@@ -166,7 +166,7 @@ func (l *LazyObjectStreamObject) getData() ([]byte, error) {
166166

167167
func (l *LazyObjectStreamObject) DecodedObject(c context.Context) (Object, error) {
168168
if l.decodedObject == nil && l.decodedError == nil {
169-
data, err := l.getData()
169+
data, err := l.GetData()
170170
if err != nil {
171171
return nil, err
172172
}

pkg/pdfcpu/writeObjects.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,15 @@ func writeDeepArray(ctx *model.Context, a types.Array, objNr, genNr int) error {
643643
return nil
644644
}
645645

646+
func writeLazyObjectStreamObject(ctx *model.Context, objNr, genNr int, o types.LazyObjectStreamObject) error {
647+
data, err := o.GetData()
648+
if err != nil {
649+
return err
650+
}
651+
652+
return writeObject(ctx, objNr, genNr, string(data))
653+
}
654+
646655
func writeObjectGeneric(ctx *model.Context, o types.Object, objNr, genNr int) (err error) {
647656
switch o := o.(type) {
648657

@@ -673,8 +682,8 @@ func writeObjectGeneric(ctx *model.Context, o types.Object, objNr, genNr int) (e
673682
case types.Name:
674683
err = writeNameObject(ctx, objNr, genNr, o)
675684

676-
case *types.LazyObjectStreamObject:
677-
err = writeObject(ctx, objNr, genNr, o.PDFString())
685+
case types.LazyObjectStreamObject:
686+
err = writeLazyObjectStreamObject(ctx, objNr, genNr, o)
678687

679688
default:
680689
err = errors.Errorf("writeIndirectObject: undefined PDF object #%d %T\n", objNr, o)

0 commit comments

Comments
 (0)