Skip to content

Commit 4a452e8

Browse files
committed
fix(jsvm): 修复重载后最后一个扩展默认关闭与指令缺失
1 parent 60d59ce commit 4a452e8

2 files changed

Lines changed: 40 additions & 39 deletions

File tree

dice/config.go

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2453,6 +2453,44 @@ func (d *Dice) ApplyExtDefaultSettings() {
24532453
}
24542454
}
24552455

2456+
// 先绑定默认设置到扩展,确保后续激活逻辑能读取AutoActive等
2457+
// 遍历设置表,将其插入扩展信息
2458+
for k, v := range exts1 {
2459+
extInfo, exists := exts2[k]
2460+
if exists {
2461+
v.ExtItem = extInfo
2462+
v.Loaded = true
2463+
extInfo.DefaultSetting = v
2464+
2465+
// 为了避免锁问题,这里做一个新的map
2466+
m := map[string]bool{}
2467+
2468+
// 将改扩展拥有的指令,塞入DisabledCommand
2469+
names := map[string]bool{}
2470+
for _, v := range extInfo.CmdMap {
2471+
names[v.Name] = true
2472+
}
2473+
// 去掉无效指令
2474+
for k, v := range v.DisabledCommand {
2475+
if names[k] {
2476+
m[k] = v
2477+
}
2478+
}
2479+
// 塞入之前没有的指令
2480+
for k := range names {
2481+
if _, exists := m[k]; !exists {
2482+
m[k] = false // false 因为默认不禁用
2483+
}
2484+
}
2485+
v.DisabledCommand = m
2486+
} else {
2487+
// 需要吗?
2488+
// 也许需要, 模糊地感觉可能造成内存泄漏
2489+
// v.ExtItem = nil
2490+
v.Loaded = false
2491+
}
2492+
}
2493+
24562494
// 批量处理所有群组的扩展激活,使用ants池进行并发处理
24572495
if len(batchExtInfos) > 0 {
24582496
// 收集所有群组信息
@@ -2495,43 +2533,6 @@ func (d *Dice) ApplyExtDefaultSettings() {
24952533
}
24962534
}
24972535

2498-
// 遍历设置表,将其插入扩展信息
2499-
for k, v := range exts1 {
2500-
extInfo, exists := exts2[k]
2501-
if exists {
2502-
v.ExtItem = extInfo
2503-
v.Loaded = true
2504-
extInfo.DefaultSetting = v
2505-
2506-
// 为了避免锁问题,这里做一个新的map
2507-
m := map[string]bool{}
2508-
2509-
// 将改扩展拥有的指令,塞入DisabledCommand
2510-
names := map[string]bool{}
2511-
for _, v := range extInfo.CmdMap {
2512-
names[v.Name] = true
2513-
}
2514-
// 去掉无效指令
2515-
for k, v := range v.DisabledCommand {
2516-
if names[k] {
2517-
m[k] = v
2518-
}
2519-
}
2520-
// 塞入之前没有的指令
2521-
for k := range names {
2522-
if _, exists := m[k]; !exists {
2523-
m[k] = false // false 因为默认不禁用
2524-
}
2525-
}
2526-
v.DisabledCommand = m
2527-
} else {
2528-
// 需要吗?
2529-
// 也许需要, 模糊地感觉可能造成内存泄漏
2530-
// v.ExtItem = nil
2531-
v.Loaded = false
2532-
}
2533-
}
2534-
25352536
// 不好分辨,直接标记
25362537
d.MarkModified()
25372538
}

dice/dice_jsvm.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,6 @@ func (d *Dice) JsInit() {
209209
}
210210
// 设置本次loop的版本,用于比较
211211
ei.JSLoopVersion = versionID
212-
213-
d.ApplyExtDefaultSettings()
214212
})
215213
_ = ext.Set("registerStringConfig", func(ei *ExtInfo, key string, defaultValue string, description string) error {
216214
if ei.dice == nil {
@@ -787,6 +785,8 @@ func (d *Dice) JsLoadScripts() {
787785

788786
d.JsLoadScriptRaw(jsInfo)
789787
}
788+
// 统一在所有脚本加载完后应用扩展默认设置
789+
d.ApplyExtDefaultSettings()
790790
}
791791

792792
func (d *Dice) JsReload() {

0 commit comments

Comments
 (0)