Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/motif/org/eclipse/swt/browser/Browser.java15
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/Browser.java13
2 files changed, 23 insertions, 5 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/motif/org/eclipse/swt/browser/Browser.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/motif/org/eclipse/swt/browser/Browser.java
index f467f7f919..e80cd3d92c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/motif/org/eclipse/swt/browser/Browser.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/motif/org/eclipse/swt/browser/Browser.java
@@ -1815,10 +1815,19 @@ public boolean setText(String html) {
nsIWebBrowserStream stream = new nsIWebBrowserStream(result[0]);
rc = stream.OpenStream(uri.getAddress(), aContentType);
if (rc != XPCOM.NS_OK) error(rc);
- int /*long*/ ptr = XPCOM.PR_Malloc(data.length);
+ int ptr = XPCOM.PR_Malloc(data.length);
XPCOM.memmove(ptr, data, data.length);
- rc = stream.AppendToStream(ptr, data.length);
- if (rc != XPCOM.NS_OK) error(rc);
+ int pageSize = 8192;
+ int pageCount = data.length / pageSize + 1;
+ int current = ptr;
+ for (int i = 0; i < pageCount; i++) {
+ int length = i == pageCount - 1 ? data.length % pageSize : pageSize;
+ if (length > 0) {
+ rc = stream.AppendToStream(current, length);
+ if (rc != XPCOM.NS_OK) error(rc);
+ }
+ current += pageSize;
+ }
rc = stream.CloseStream();
if (rc != XPCOM.NS_OK) error(rc);
XPCOM.PR_Free(ptr);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/Browser.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/Browser.java
index 0d6b6632d8..2161169d26 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/Browser.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/Browser.java
@@ -1832,8 +1832,17 @@ public boolean setText(String html) {
if (rc != XPCOM.NS_OK) error(rc);
int /*long*/ ptr = XPCOM.PR_Malloc(data.length);
XPCOM.memmove(ptr, data, data.length);
- rc = stream.AppendToStream(ptr, data.length);
- if (rc != XPCOM.NS_OK) error(rc);
+ int pageSize = 8192;
+ int pageCount = data.length / pageSize + 1;
+ int /*long*/ current = ptr;
+ for (int i = 0; i < pageCount; i++) {
+ int length = i == pageCount - 1 ? data.length % pageSize : pageSize;
+ if (length > 0) {
+ rc = stream.AppendToStream(current, length);
+ if (rc != XPCOM.NS_OK) error(rc);
+ }
+ current += pageSize;
+ }
rc = stream.CloseStream();
if (rc != XPCOM.NS_OK) error(rc);
XPCOM.PR_Free(ptr);

Back to the top