Skip to content
This repository was archived by the owner on Dec 15, 2025. It is now read-only.

Commit 9edd73f

Browse files
committed
fix build
1 parent 3d5ee10 commit 9edd73f

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

feature_adapter.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ func (adapter *Decoder) Buffered() io.Reader {
9797

9898
// UseNumber for number JSON element, use float64 or json.NumberValue (alias of string)
9999
func (adapter *Decoder) UseNumber() {
100-
origCfg := adapter.iter.cfg.configBeforeFrozen
101-
origCfg.UseNumber = true
102-
adapter.iter.cfg = origCfg.Froze().(*frozenConfig)
100+
cfg := adapter.iter.cfg.configBeforeFrozen
101+
cfg.UseNumber = true
102+
adapter.iter.cfg = cfg.frozeWithCacheReuse()
103103
}
104104

105105
// NewEncoder same as json.NewEncoder
@@ -122,14 +122,16 @@ func (adapter *Encoder) Encode(val interface{}) error {
122122

123123
// SetIndent set the indention. Prefix is not supported
124124
func (adapter *Encoder) SetIndent(prefix, indent string) {
125-
adapter.stream.cfg.indentionStep = len(indent)
125+
config := adapter.stream.cfg.configBeforeFrozen
126+
config.IndentionStep = len(indent)
127+
adapter.stream.cfg = config.frozeWithCacheReuse()
126128
}
127129

128130
// SetEscapeHTML escape html by default, set to false to disable
129131
func (adapter *Encoder) SetEscapeHTML(escapeHTML bool) {
130132
config := adapter.stream.cfg.configBeforeFrozen
131133
config.EscapeHTML = escapeHTML
132-
adapter.stream.cfg = config.Froze().(*frozenConfig)
134+
adapter.stream.cfg = config.frozeWithCacheReuse()
133135
}
134136

135137
// Valid reports whether data is a valid JSON encoding.

feature_config.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,7 @@ var ConfigFastest = Config{
6060

6161
// Froze forge API from config
6262
func (cfg Config) Froze() API {
63-
api := getFrozenConfigFromCache(cfg)
64-
if api != nil {
65-
return api
66-
}
67-
api = &frozenConfig{
63+
api := &frozenConfig{
6864
sortMapKeys: cfg.SortMapKeys,
6965
indentionStep: cfg.IndentionStep,
7066
objectFieldMustBeSimpleString: cfg.ObjectFieldMustBeSimpleString,
@@ -86,6 +82,15 @@ func (cfg Config) Froze() API {
8682
api.validateJsonRawMessage()
8783
}
8884
api.configBeforeFrozen = cfg
85+
return api
86+
}
87+
88+
func (cfg Config) frozeWithCacheReuse() *frozenConfig {
89+
api := getFrozenConfigFromCache(cfg)
90+
if api != nil {
91+
return api
92+
}
93+
api = cfg.Froze().(*frozenConfig)
8994
addFrozenConfigToCache(cfg, api)
9095
return api
9196
}
@@ -233,7 +238,7 @@ func (cfg *frozenConfig) MarshalIndent(v interface{}, prefix, indent string) ([]
233238
}
234239
newCfg := cfg.configBeforeFrozen
235240
newCfg.IndentionStep = len(indent)
236-
return newCfg.Froze().Marshal(v)
241+
return newCfg.frozeWithCacheReuse().Marshal(v)
237242
}
238243

239244
func (cfg *frozenConfig) UnmarshalFromString(str string, v interface{}) error {

0 commit comments

Comments
 (0)