From db5aa019a6ee427e5238c24651b27f5f47c93899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 26 Oct 2024 10:50:40 +0200 Subject: [PATCH] Fixed: #2192 Long script lines are now wrapped (1000 chars limit by default) to avoid problems on Linux --- CHANGELOG.md | 2 ++ .../flash/abc/avm2/model/AVM2Item.java | 6 ++--- .../flash/abc/avm2/model/CallAVM2Item.java | 2 +- .../abc/avm2/model/CallMethodAVM2Item.java | 4 ++-- .../abc/avm2/model/CallPropertyAVM2Item.java | 4 ++-- .../abc/avm2/model/ConstructAVM2Item.java | 2 +- .../abc/avm2/model/ConstructPropAVM2Item.java | 2 +- .../avm2/model/ConstructSuperAVM2Item.java | 4 ++-- .../abc/avm2/model/NewArrayAVM2Item.java | 2 +- .../action/model/CallFunctionActionItem.java | 2 +- .../action/model/CallMethodActionItem.java | 8 +++---- .../action/model/GetMemberActionItem.java | 4 ++-- .../action/model/SetMemberActionItem.java | 2 +- .../flash/configuration/Configuration.java | 4 ++++ .../flash/helpers/GraphTextWriter.java | 24 ++++++++++++++++++- .../flash/helpers/HighlightedTextWriter.java | 8 ++++++- .../flash/helpers/StreamTextWriter.java | 7 ++++++ .../helpers/StringBuilderTextWriter.java | 7 ++++++ .../locales/AdvancedSettingsDialog.properties | 5 +++- 19 files changed, 75 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c57fef75..b00d62bf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file. - [#2341] FLA export - DefineEditText - use its default text color on HTML enabled inputs - FLA export - DefineEditText default text color alpha - Text display - Alpha channel should not be supported for texts using device fonts +- [#2192] Long script lines are now wrapped (1000 chars limit by default) to avoid problems on Linux ## [21.1.1] - 2024-10-13 ### Added @@ -3623,6 +3624,7 @@ Major version of SWF to XML export changed to 2. [#2348]: https://www.free-decompiler.com/flash/issues/2348 [#2341]: https://www.free-decompiler.com/flash/issues/2341 [#2345]: https://www.free-decompiler.com/flash/issues/2345 +[#2192]: https://www.free-decompiler.com/flash/issues/2192 [#2321]: https://www.free-decompiler.com/flash/issues/2321 [#2305]: https://www.free-decompiler.com/flash/issues/2305 [#2328]: https://www.free-decompiler.com/flash/issues/2328 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java index dd8a4c081..d6c8eb641 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java @@ -174,16 +174,16 @@ public abstract class AVM2Item extends GraphTargetItem { if (((FullMultinameAVM2Item) propertyName).name != null) { if (((FullMultinameAVM2Item) propertyName).namespace != null) { //writer.append("."); - writer.hilightSpecial(".", HighlightSpecialType.PROPERTY_TYPE, 0, data); + writer.allowWrapHere().hilightSpecial(".", HighlightSpecialType.PROPERTY_TYPE, 0, data); } return propertyName.toString(writer, localData); } else { - writer.hilightSpecial(".", HighlightSpecialType.PROPERTY_TYPE, 0, data); + writer.allowWrapHere().hilightSpecial(".", HighlightSpecialType.PROPERTY_TYPE, 0, data); //writer.append("."); return propertyName.toString(writer, localData); } } else { - writer.append("["); + writer.append("[").allowWrapHere(); propertyName.toString(writer, localData); return writer.append("]"); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java index 859b4f237..ca7b0a4f2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallAVM2Item.java @@ -236,7 +236,7 @@ public class CallAVM2Item extends AVM2Item { writer.append("("); for (int a = 0; a < arguments.size(); a++) { if (a > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } arguments.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java index b88ffecf9..0f9e0b037 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java @@ -77,13 +77,13 @@ public class CallMethodAVM2Item extends AVM2Item { } else { receiver.toString(writer, localData); } - writer.append("."); + writer.allowWrapHere().append("."); writer.append(methodName); writer.spaceBeforeCallParenthesies(arguments.size()); writer.append("("); for (int a = 0; a < arguments.size(); a++) { if (a > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } arguments.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java index 937b04bdb..63a80ab01 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallPropertyAVM2Item.java @@ -101,8 +101,8 @@ public class CallPropertyAVM2Item extends AVM2Item { writer.spaceBeforeCallParenthesies(arguments.size()); writer.append("("); for (int a = 0; a < arguments.size(); a++) { - if (a > 0) { - writer.append(","); + if (a > 0) { + writer.allowWrapHere().append(","); } arguments.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java index 915a6df63..fc62feb45 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructAVM2Item.java @@ -89,7 +89,7 @@ public class ConstructAVM2Item extends AVM2Item { writer.append("("); for (int a = 0; a < args.size(); a++) { if (a > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } args.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java index 2565a65af..771cbecd5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructPropAVM2Item.java @@ -91,7 +91,7 @@ public class ConstructPropAVM2Item extends AVM2Item { writer.append("("); for (int a = 0; a < args.size(); a++) { if (a > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } args.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java index 574f601ea..5ca6ccf0d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/ConstructSuperAVM2Item.java @@ -71,13 +71,13 @@ public class ConstructSuperAVM2Item extends AVM2Item { public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { if (!object.toString().equals("this")) { object.toString(writer, localData); - writer.append("."); + writer.allowWrapHere().append("."); } writer.spaceBeforeCallParenthesies(args.size()); writer.append("super("); for (int a = 0; a < args.size(); a++) { if (a > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } args.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java index 9243be51e..71e84aa72 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NewArrayAVM2Item.java @@ -67,7 +67,7 @@ public class NewArrayAVM2Item extends AVM2Item { writer.append("["); for (int a = 0; a < values.size(); a++) { if (a > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } values.get(a).toString(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java index 7576dc828..a8ca2faa8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java @@ -103,7 +103,7 @@ public class CallFunctionActionItem extends ActionItem { writer.append("("); for (int t = 0; t < arguments.size(); t++) { if (t > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } arguments.get(t).toStringNL(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java index 2ca19afd0..abb16b3d2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java @@ -120,7 +120,7 @@ public class CallMethodActionItem extends ActionItem { } else { scriptObject.toString(writer, localData); } - writer.append("."); + writer.allowWrapHere().append("."); writer.append(setterGetterVarName); return writer; } else if (special == SPECIAL_SETTER) { @@ -131,7 +131,7 @@ public class CallMethodActionItem extends ActionItem { } else { scriptObject.toString(writer, localData); } - writer.append("."); + writer.allowWrapHere().append("."); writer.append(setterGetterVarName); writer.append(" = "); arguments.get(0).toStringNL(writer, localData); @@ -160,7 +160,7 @@ public class CallMethodActionItem extends ActionItem { } if (!(((DirectValueActionItem) methodName).value instanceof RegisterNumber) && IdentifiersDeobfuscation.isValidName(false, methodName.toStringNoQuotes(localData))) { - writer.append("."); + writer.allowWrapHere().append("."); methodName.toStringNoQuotes(writer, localData); } else { writer.append("["); @@ -189,7 +189,7 @@ public class CallMethodActionItem extends ActionItem { writer.append("("); for (int t = 0; t < arguments.size(); t++) { if (t > 0) { - writer.append(","); + writer.allowWrapHere().append(","); } arguments.get(t).toStringNL(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java index 4d7cd4f35..0e9cd00c1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetMemberActionItem.java @@ -78,7 +78,7 @@ public class GetMemberActionItem extends ActionItem { public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { object.toString(writer, localData); if ((memberName instanceof DirectValueActionItem) && printObfuscatedMemberName) { - writer.append("."); + writer.allowWrapHere().append("."); StringBuilder sb = new StringBuilder(); StringBuilderTextWriter sbw = new StringBuilderTextWriter(new CodeFormatting(), sb); stripQuotes(memberName, localData, sbw); @@ -90,7 +90,7 @@ public class GetMemberActionItem extends ActionItem { memberName.toString(writer, localData); return writer.append("]"); } - writer.append("."); + writer.allowWrapHere().append("."); return stripQuotes(memberName, localData, writer); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java index a338cb3e3..240707a86 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java @@ -129,7 +129,7 @@ public class SetMemberActionItem extends ActionItem implements SetTypeActionItem objectName.toString(writer, localData); writer.append("]"); } else { - writer.append("."); + writer.allowWrapHere().append("."); stripQuotes(objectName, localData, writer); } if (compoundOperator != null) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 82457276e..af57f2594 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -1041,6 +1041,10 @@ public final class Configuration { public static ConfigurationItem lastSessionEasySwf = null; + @ConfigurationDefaultInt(1000) + @ConfigurationCategory("limit") + public static ConfigurationItem maxScriptLineLength = null; + private enum OSId { WINDOWS, OSX, UNIX } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java index e4bd4c76b..f0ad5abb4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/GraphTextWriter.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.flash.helpers; +import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.hilight.HighlightData; import com.jpexs.decompiler.flash.helpers.hilight.HighlightSpecialType; import com.jpexs.decompiler.graph.GraphSourceItem; @@ -41,7 +42,12 @@ public abstract class GraphTextWriter { * Code formatting */ protected CodeFormatting formatting; - + + /** + * Line length + */ + protected int lineLength = 0; + /** * Trait index - instance initializer */ @@ -315,6 +321,14 @@ public abstract class GraphTextWriter { */ public abstract GraphTextWriter append(String str, long offset, long fileOffset); + /** + * Enlarges line length + * @param len Length to add + */ + protected final void addLineLength(int len) { + lineLength += len; + } + /** * Appends text without highlight. * @param i Text @@ -350,6 +364,7 @@ public abstract class GraphTextWriter { * @return GraphTextWriter */ public GraphTextWriter newLine() { + lineLength = 0; return this; } @@ -431,6 +446,13 @@ public abstract class GraphTextWriter { return append(" "); } + public GraphTextWriter allowWrapHere() { + if (Configuration.maxScriptLineLength.get() > 0 && lineLength > Configuration.maxScriptLineLength.get()) { + newLine(); + } + return this; + } + /** * Space before call parenthesies. * @param argCount Argument count diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/HighlightedTextWriter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/HighlightedTextWriter.java index 0cdc7ba98..f48cecd66 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/HighlightedTextWriter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/HighlightedTextWriter.java @@ -224,7 +224,8 @@ public class HighlightedTextWriter extends GraphTextWriter { } @Override - public HighlightedTextWriter appendWithData(String str, HighlightData data) { + public HighlightedTextWriter appendWithData(String str, HighlightData data) { + addLineLength(str.length()); Highlighting h = null; if (!offsets.empty()) { GraphSourceItemPosition itemPos = offsets.peek(); @@ -258,11 +259,13 @@ public class HighlightedTextWriter extends GraphTextWriter { @Override public HighlightedTextWriter append(String str) { + addLineLength(str.length()); return appendWithData(str, null); } @Override public HighlightedTextWriter append(String str, long offset, long fileOffset) { + addLineLength(str.length()); Highlighting h = null; if (hilight) { HighlightData data = new HighlightData(); @@ -280,12 +283,14 @@ public class HighlightedTextWriter extends GraphTextWriter { @Override public HighlightedTextWriter appendNoHilight(int i) { + addLineLength(Integer.toString(i).length()); appendNoHilight(Integer.toString(i)); return this; } @Override public HighlightedTextWriter appendNoHilight(String str) { + addLineLength(str.length()); appendToSb(str); return this; } @@ -307,6 +312,7 @@ public class HighlightedTextWriter extends GraphTextWriter { appendToSb(formatting.newLineChars); newLine = true; newLineCount++; + lineLength = 0; return this; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StreamTextWriter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StreamTextWriter.java index c891da580..4032645d5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StreamTextWriter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StreamTextWriter.java @@ -53,36 +53,42 @@ public class StreamTextWriter extends GraphTextWriter implements AutoCloseable { @Override public GraphTextWriter hilightSpecial(String text, HighlightSpecialType type, String specialValue, HighlightData data) { + addLineLength(text.length()); writeToOutputStream(text); return this; } @Override public GraphTextWriter appendWithData(String str, HighlightData data) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @Override public StreamTextWriter append(String str) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @Override public StreamTextWriter append(String str, long offset, long fileOffset) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @Override public StreamTextWriter appendNoHilight(int i) { + addLineLength(Integer.toString(i).length()); writeToOutputStream(Integer.toString(i)); return this; } @Override public StreamTextWriter appendNoHilight(String str) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @@ -103,6 +109,7 @@ public class StreamTextWriter extends GraphTextWriter implements AutoCloseable { public StreamTextWriter newLine() { writeToOutputStream(formatting.newLineChars); newLine = true; + lineLength = 0; return this; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StringBuilderTextWriter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StringBuilderTextWriter.java index 3cd6bdfd6..68dc6d4e7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StringBuilderTextWriter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/StringBuilderTextWriter.java @@ -46,36 +46,42 @@ public class StringBuilderTextWriter extends GraphTextWriter { @Override public GraphTextWriter hilightSpecial(String text, HighlightSpecialType type, String specialValue, HighlightData data) { + addLineLength(text.length()); writeToOutputStream(text); return this; } @Override public GraphTextWriter appendWithData(String str, HighlightData data) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @Override public StringBuilderTextWriter append(String str) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @Override public StringBuilderTextWriter append(String str, long offset, long fileOffset) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @Override public StringBuilderTextWriter appendNoHilight(int i) { + addLineLength(Integer.toString(i).length()); writeToOutputStream(Integer.toString(i)); return this; } @Override public StringBuilderTextWriter appendNoHilight(String str) { + addLineLength(str.length()); writeToOutputStream(str); return this; } @@ -96,6 +102,7 @@ public class StringBuilderTextWriter extends GraphTextWriter { public StringBuilderTextWriter newLine() { writeToOutputStream(formatting.newLineChars); newLine = true; + lineLength = 0; return this; } diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index c0b5885eb..494f282c0 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -544,4 +544,7 @@ config.name.gui.splitPaneEasyHorizontal.dividerLocationPercent = (Internal) Easy config.description.gui.splitPaneEasyHorizontal.dividerLocationPercent = config.name.lastSessionEasySwf = Last Easy mode session file -config.description.lastSessionEasySwf = Contains the selected SWF from the last session in Easy mode \ No newline at end of file +config.description.lastSessionEasySwf = Contains the selected SWF from the last session in Easy mode + +config.name.maxScriptLineLength = Maximum script line length +config.description.maxScriptLineLength = Maximum line length in the script editor before line wrapping occurs. 0 = unlimited. On linux there might be problems on displaying very large lines so that's why it's limited by default. \ No newline at end of file