{"record":{"id":"d6028d25b0e4b45c","repo":"stride3d/stride","slug":"the-bestwidth-parameter-must-be-greater-than-bestindent-2","errorCode":null,"errorMessage":"The bestWidth parameter must be greater than bestIndent * 2.","messagePattern":"The bestWidth parameter must be greater than bestIndent \\* 2\\.","errorType":"validation","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"sources/core/Stride.Core.Yaml/Emitter.cs","lineNumber":158,"sourceCode":"        /// <param name=\"isCanonical\">If true, write the output in canonical form.</param>\n        /// <param name=\"forceIndentLess\">if set to <c>true</c> [always indent].</param>\n        /// <exception cref=\"System.ArgumentOutOfRangeException\">\n        /// bestIndent\n        /// or\n        /// bestWidth;The bestWidth parameter must be greater than bestIndent * 2.\n        /// </exception>\n        public Emitter(TextWriter output, int bestIndent = MinBestIndent, int bestWidth = int.MaxValue, bool isCanonical = false, bool forceIndentLess = false)\n        {\n            if (bestIndent < MinBestIndent || bestIndent > MaxBestIndent)\n            {\n                throw new ArgumentOutOfRangeException(\"bestIndent\", string.Format(CultureInfo.InvariantCulture, \"The bestIndent parameter must be between {0} and {1}.\", MinBestIndent, MaxBestIndent));\n            }\n\n            this.bestIndent = bestIndent;\n\n            if (bestWidth <= bestIndent*2)\n            {\n                throw new ArgumentOutOfRangeException(\"bestWidth\", \"The bestWidth parameter must be greater than bestIndent * 2.\");\n            }\n\n            this.bestWidth = bestWidth;\n\n            this.isCanonical = isCanonical;\n            this.forceIndentLess = forceIndentLess;\n\n            this.output = output;\n        }\n\n        /// <summary>\n        /// Gets or sets a value indicating whether [always indent].\n        /// </summary>\n        /// <value><c>true</c> if [always indent]; otherwise, <c>false</c>.</value>\n        public bool ForceIndentLess { get { return forceIndentLess; } set { forceIndentLess = value; } }\n\n\n        private void Write(char value)","sourceCodeStart":140,"sourceCodeEnd":176,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/core/Stride.Core.Yaml/Emitter.cs#L140-L176","documentation":"The Emitter constructor requires bestWidth to be strictly greater than bestIndent * 2; otherwise it throws ArgumentOutOfRangeException. The line width must leave room for at least two indentation levels.","triggerScenarios":"new Emitter(output, bestIndent: 4, bestWidth: 8) or any bestWidth <= bestIndent*2, e.g. bestWidth equal to or less than twice the indent.","commonSituations":"Setting a narrow line width (e.g. 80) together with a large indent such that width <= 2*indent; computing widths dynamically without validating the relationship.","solutions":["Increase bestWidth so it is strictly greater than 2 * bestIndent.","Reduce bestIndent when a narrow width is required.","Validate/derive width from indent: bestWidth = Math.Max(bestWidth, 2 * bestIndent + 1)."],"exampleFix":"// before\nvar emitter = new Emitter(writer, bestIndent: 40, bestWidth: 80); // 80 <= 80\n// after\nvar emitter = new Emitter(writer, bestIndent: 40, bestWidth: 81);","handlingStrategy":"validation","validationCode":"if (bestWidth <= bestIndent * 2)\n    bestWidth = bestIndent * 2 + 1;\nvar emitter = new Emitter(writer, bestIndent, bestWidth);","typeGuard":"bool IsValidWidth(int indent, int width) => width > indent * 2;","tryCatchPattern":"try { emitter = new Emitter(writer, bestIndent, bestWidth); }\ncatch (ArgumentOutOfRangeException) { emitter = new Emitter(writer, bestIndent, bestIndent * 2 + 1); }","preventionTips":["Derive width from indent with the > 2*indent rule","Avoid combining large indents with narrow widths","Validate both parameters together before construction"],"tags":["yaml","argument-out-of-range"],"backgroundTag":"invalid-argument-value","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}