Skip to content

Commit 239ae3e

Browse files
committed
core: bring back panicking behvaiour from pre-1.8.0 (#200)
1 parent 2a95798 commit 239ae3e

File tree

4 files changed

+18
-23
lines changed

4 files changed

+18
-23
lines changed

net_messages.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const entitySentinel = 9999
1212

1313
func (p *Parser) handlePacketEntities(pe *msg.CSVCMsg_PacketEntities) {
1414
defer func() {
15-
p.setError(recoverFromPanic(recover()))
15+
p.setError(recoverFromUnexpectedEOF(recover()))
1616
}()
1717

1818
r := bit.NewSmallBitReader(bytes.NewReader(pe.EntityData))

parser_test.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,15 @@ func TestParser_Progress_NoHeader(t *testing.T) {
6666
assert.Zero(t, (&Parser{header: &common.DemoHeader{}}).Progress())
6767
}
6868

69-
func TestRecoverFromPanic(t *testing.T) {
70-
assert.Nil(t, recoverFromPanic(nil))
71-
assert.Equal(t, ErrUnexpectedEndOfDemo, recoverFromPanic(io.ErrUnexpectedEOF))
72-
assert.Equal(t, ErrUnexpectedEndOfDemo, recoverFromPanic(io.EOF))
73-
74-
err := errors.New("test")
75-
assert.Equal(t, err, recoverFromPanic(err))
76-
77-
assert.Equal(t, "test", recoverFromPanic("test").Error())
78-
assert.Equal(t, "unexpected error: 1", recoverFromPanic(1).Error())
69+
func TestRecoverFromUnexpectedEOF(t *testing.T) {
70+
assert.Nil(t, recoverFromUnexpectedEOF(nil))
71+
assert.Equal(t, ErrUnexpectedEndOfDemo, recoverFromUnexpectedEOF(io.ErrUnexpectedEOF))
72+
assert.Equal(t, ErrUnexpectedEndOfDemo, recoverFromUnexpectedEOF(io.EOF))
73+
74+
assert.Panics(t, func() {
75+
r := recoverFromUnexpectedEOF(errors.New("test"))
76+
assert.Failf(t, "expected panic, got recovery", "recovered value = '%v'", r)
77+
})
7978
}
8079

8180
type consumerCodePanicMock struct {
@@ -92,7 +91,7 @@ func (ucp consumerCodePanicMock) Value() interface{} {
9291

9392
func TestRecoverFromPanic_ConsumerCodePanic(t *testing.T) {
9493
assert.PanicsWithValue(t, 1, func() {
95-
err := recoverFromPanic(consumerCodePanicMock{value: 1})
94+
err := recoverFromUnexpectedEOF(consumerCodePanicMock{value: 1})
9695
assert.Nil(t, err)
9796
})
9897
}

parsing.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (p *Parser) ParseToEnd() (err error) {
9898
}
9999

100100
if err == nil {
101-
err = recoverFromPanic(recover())
101+
err = recoverFromUnexpectedEOF(recover())
102102
}
103103
}()
104104

@@ -126,7 +126,7 @@ func (p *Parser) ParseToEnd() (err error) {
126126
}
127127
}
128128

129-
func recoverFromPanic(r interface{}) error {
129+
func recoverFromUnexpectedEOF(r interface{}) error {
130130
if r == nil {
131131
return nil
132132
}
@@ -138,12 +138,8 @@ func recoverFromPanic(r interface{}) error {
138138
switch err := r.(type) {
139139
case dispatch.ConsumerCodePanic:
140140
panic(err.Value())
141-
case error:
142-
return err
143-
case string:
144-
return errors.New(err)
145141
default:
146-
return fmt.Errorf("unexpected error: %v", err)
142+
panic(err)
147143
}
148144
}
149145

@@ -174,7 +170,7 @@ func (p *Parser) ParseNextFrame() (moreFrames bool, err error) {
174170
}
175171

176172
if err == nil {
177-
err = recoverFromPanic(recover())
173+
err = recoverFromUnexpectedEOF(recover())
178174
}
179175
}()
180176

stringtables.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (p *Parser) parseSingleStringTable(name string) {
9999
}
100100

101101
func (p *Parser) handleUpdateStringTable(tab *msg.CSVCMsg_UpdateStringTable) {
102-
// No need for recoverFromPanic here as we do that in processStringTable already
102+
// No need for recoverFromUnexpectedEOF here as we do that in processStringTable already
103103

104104
cTab := p.stringTables[tab.TableId]
105105
switch cTab.Name {
@@ -117,7 +117,7 @@ func (p *Parser) handleUpdateStringTable(tab *msg.CSVCMsg_UpdateStringTable) {
117117
}
118118

119119
func (p *Parser) handleCreateStringTable(tab *msg.CSVCMsg_CreateStringTable) {
120-
// No need for recoverFromPanic here as we do that in processStringTable already
120+
// No need for recoverFromUnexpectedEOF here as we do that in processStringTable already
121121

122122
p.processStringTable(tab)
123123

@@ -128,7 +128,7 @@ func (p *Parser) handleCreateStringTable(tab *msg.CSVCMsg_CreateStringTable) {
128128

129129
func (p *Parser) processStringTable(tab *msg.CSVCMsg_CreateStringTable) {
130130
defer func() {
131-
p.setError(recoverFromPanic(recover()))
131+
p.setError(recoverFromUnexpectedEOF(recover()))
132132
}()
133133

134134
if tab.Name == stNameModelPreCache {

0 commit comments

Comments
 (0)