Bug 15045
Summary: | &t being added to the top of a textarea, and a > is being replaced by a ; | ||
---|---|---|---|
Product: | WebKit | Reporter: | Terry Riegel <riegel> |
Component: | Forms | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | Major | CC: | bfulgham, justin.garcia |
Priority: | P2 | ||
Version: | 523.x (Safari 3) | ||
Hardware: | Mac | ||
OS: | OS X 10.4 |
Terry Riegel
This one is hard to duplicate. I have a very fragile test case that I can duplicate the problem on. I would be happy to show someone but it may be difficult to demonstrate with out me stepping through the procedure.
The bug happens intermitently and isn't always caught by me. I use Safari to edit web sites, and when this bug cropps up my page gets mangled. It doesn't happen all of the time. This is a test case where I was able to get it to happen over and over again.
Here is how to duplicate it.
1. go to http://www.clearimageonline.com/pages/start/login.html
login as webkit, password: webkittestcase
2. Click the little icon next to snipshot.html
3. This opens a web editor right after the text "...it messes up frames" add a space and save
4. What happens is &t gets added to the start of the text in the textarea, and a > gets replaced with a ;
5. If you do a view source you can see that the sources does not contain these spurious characters.
6. If you save again it will sve the spurious characters.
THE TEXT BEFORE LOOKS LIKE
------------------------
<<
function snipshot(f,edittext,cx,cy) locals temp,a,original do
# Use snipshot to edit the images, always save the original, see code below /#
if left(f,1)<>'/' then f=replaceall(dirname(page)+'/'+f,'//','/') /if
if isfile(f) then
a=ci_extract(f)
original=a[1]+a[6]+a[2]+ci_prefs[1,4]+'-ORIGINAL'+a[4]
if not(isfile(original)) then temp=syscp(f,original) /if
if isfile('/upload/file'+usernum) then
temp=sysmv(original,f+'ORIGINAL')
temp=ci_rmtemp(f)
temp=sysmv(f+'ORIGINAL',original)
temp=sysmv('/upload/file'+usernum,f)
/if
if cx='' or cy='' then
return '<a exithref="http://services.snipshot.com/?snipshot_input='+domainurl+postprep(replaceall('/'+original,'//','/'))+'&snipshot_callback='+postprep(getlink(page))+'&snipshot_output=file'+usernum+'&snipshot_callback_method=post">'+edittext+'</a>' /return
else
return '<a exithref="http://services.snipshot.com/?snipshot_input='+domainurl+postprep(replaceall('/'+original,'//','/'))+'&snipshot_callback='+postprep(getlink(page))+'&snipshot_output=file'+usernum+'&snipshot_callback_method=post&snipshot_output_options='+postprep('{"size":{"max":{"width":'+cx+',"height":'+cy+'}}}')+'">'+edittext+'</a>' /return
/if
else
return '' /return
/if
/function
f='test.jpg'
>>
<html>
<a href="<<page>>">RELOAD</a> | <a href="<<page>>" target="new">OPEN IN NEW WINDOW</a><hr>
<<ci_img(f,'','','TRUE')>>
<br>Make sure you run this in its own window. It messes up frames<hr>
<<snipshot(f,'Edit This Picture',90,125)>>
</html>
THE TEXT AFTER LOOKS LIKE
------------------------
&t<<
function snipshot(f,edittext,cx,cy) locals temp,a,original do
# Use snipshot to edit the images, always save the original, see code below /#
if left(f,1)<>'/' then f=replaceall(dirname(page)+'/'+f,'//','/') /if
if isfile(f) then
a=ci_extract(f)
original=a[1]+a[6]+a[2]+ci_prefs[1,4]+'-ORIGINAL'+a[4]
if not(isfile(original)) then temp=syscp(f,original) /if
if isfile('/upload/file'+usernum) then
temp=sysmv(original,f+'ORIGINAL')
temp=ci_rmtemp(f)
temp=sysmv(f+'ORIGINAL',original)
temp=sysmv('/upload/file'+usernum,f)
/if
if cx='' or cy='' then
return '<a exithref="http://services.snipshot.com/?snipshot_input='+domainurl+postprep(replaceall('/'+original,'//','/'))+'&snipshot_callback='+postprep(getlink(page))+'&snipshot_output=file'+usernum+'&snipshot_callback_method=post";'+edittext+'</a>' /return
else
return '<a exithref="http://services.snipshot.com/?snipshot_input='+domainurl+postprep(replaceall('/'+original,'//','/'))+'&snipshot_callback='+postprep(getlink(page))+'&snipshot_output=file'+usernum+'&snipshot_callback_method=post&snipshot_output_options='+postprep('{"size":{"max":{"width":'+cx+',"height":'+cy+'}}}')+'">'+edittext+'</a>' /return
/if
else
return '' /return
/if
/function
f='test.jpg'
>>
<html>
<a href="<<page>>">RELOAD</a> | <a href="<<page>>" target="new">OPEN IN NEW WINDOW</a><hr>
<<ci_img(f,'','','TRUE')>>
<br>Make sure you run this in its own window. It messes up frames<hr>
<<snipshot(f,'Edit This Picture',90,125)>>
</html>
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
David Kilzer (:ddkilzer)
Based on the description, I'm guessing that ">" or "<" is being replaced by "<" or ">" in the DOM, but then something bad happens and those literal values are edited into "&t" or ";". A reproducible test case would really help in this instance.
Terry, does this happen while you're typing/editing the text?
Are you using Safari 3 Public Beta v. 3.0.3? A WebKit nightly? Safari 2.0.4?
Terry Riegel
I have a reproducable test case, but it is like standing on my hands while holding a cup of coffe with my toes and touching the TV antanae to get good reception. I noticed it when Safari 3 first came out. It was/is of a severe enough nature that I had to stop using safari 3 since it would mess up my code.
It happens when the page loads. Sometimes it will happen just by opening the page, other times (like the one I was able to duplicate) it happens after some sequence of editing and the page is saved/reloaded.
If you call me (252)437-7771 ext 227 I can step you through a reproducable test case.
David Kilzer (:ddkilzer)
Terry, do you have SnapzPro? If so, you could create a demonstration movie with narration.
Brent Fulgham
The relevant test case no longer exists.