Closed Bug 151337 Opened 23 years ago Closed 23 years ago

EcmaError.getLineSource() returns 0x0 characters.

Categories

(Rhino Graveyard :: Core, defect)

x86
All
defect
Not set
minor

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: morten, Assigned: norrisboyd)

Details

Attachments

(2 files)

The function EcmaError.getLineSource() returns 0x0 ascii characters if the syntax error happened on a line that doesnt have a end of line before the script ends (last line of the code that doesnt have a newline in the end). For example, the script "illegal javascript syntax" will return "illegal javascript syntax[][][][][][][][][]" where [] is ascii 0x0. ---- Little code showing the problem ---- import org.mozilla.javascript.*; import java.io.*; public class EcmaError { public static void main(String args[]) throws JavaScriptException, IOException { Context cx = Context.enter(); Scriptable scope = cx.initStandardObjects(null); String s = "\njavascript syntax error"; // A script with syntax error and no newline try { Object result = cx.evaluateString(scope, s, "<cmd>", 1, null); } catch (EcmaError e) { e.printStackTrace(); for (int i = 0 ; i < e.getLineSource().length() ; i++ ) System.out.print(" " + (int)(e.getLineSource().charAt(i))); System.out.println("\nline is : \"" + e.getLineSource() + "\" (length of line = " + e.getLineSource().length() + ")"); } Context.exit(); } } ---- Run result --- 106 97 118 97 115 99 114 105 112 116 32 115 121 110 116 97 120 32 101 114 114 111 114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 line is : "javascript syntax error" (length of line = 254) Notice the string is 254 characters long and have a lot of 0x0 ascii chars in the end. Sounds like a end of buffer problem.
The test should print PASSED if getLineSource returns proper string
I committed the patch which is big due to removal of startString/getString as TokenStream uses own buffer.
Fixed: it would be nice if Rhino will implement the line property of the error object to match SM so the test case can be written in JS...
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Verified FIXED. Before the patch, the above testcase failed as follows: FAILED! e.getLineSource() does not match 'javascript syntax error': javascript syntax error\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 After the patch: PASSED
Status: RESOLVED → VERIFIED
Targeting as resolved against 1.5R4
Target Milestone: --- → 1.5R4
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: