fix: problem config is not properly parsed

This commit is contained in:
Paul Pan 2024-04-28 14:39:43 +08:00
parent 1dfe296820
commit aaac7f57a0
Signed by: Paul
GPG Key ID: D639BDF5BA578AF4

View File

@ -54,6 +54,29 @@ var (
}
)
func (c *ConfigRuntime) InitWithDefault(fallback *ConfigRuntime) {
if c.Validate() != nil {
*c = *fallback
} else {
c.FillDefault()
}
}
func (c *ConfigRuntime) FillDefault() {
if c.SoftMemoryLimit <= 0 {
// default to memory limit
c.SoftMemoryLimit = c.MemoryLimit
}
if c.NProcLimit <= 0 {
// default to not limited
c.NProcLimit = 0
}
if c.WriteFileLimit <= 0 {
// default to 1mb
c.WriteFileLimit = 1
}
}
func (c *ConfigRuntime) Validate() error {
if c.TimeLimit <= 0 {
return errors.New("time limit <= 0")
@ -222,16 +245,11 @@ func (s *service) ParseConfig(meta *JudgeMeta, skipCheck bool) (*Config, error)
// fill default
for idx := range config.Languages {
if config.Languages[idx].Runtime.Compile.Validate() != nil {
config.Languages[idx].Runtime.Compile = DefaultCompileRuntime
}
if config.Languages[idx].Runtime.Check.Validate() != nil {
config.Languages[idx].Runtime.Check = DefaultCheckRuntime
}
}
if config.Prebuild.Validate() != nil {
config.Prebuild = DefaultPrebuildRuntime
config.Languages[idx].Runtime.Compile.InitWithDefault(&DefaultCompileRuntime)
config.Languages[idx].Runtime.Check.InitWithDefault(&DefaultCheckRuntime)
config.Languages[idx].Runtime.Run.FillDefault()
}
config.Prebuild.InitWithDefault(&DefaultPrebuildRuntime)
if skipCheck {
return config, nil