*** empty log message ***
diff --git a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/base/BuildPathUtil.java b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/base/BuildPathUtil.java
index bf8cd36..66f98b5 100644
--- a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/base/BuildPathUtil.java
+++ b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/base/BuildPathUtil.java
@@ -112,7 +112,7 @@
 		if (entry.getName().startsWith("source.")) {

 			String [] folders = entry.getTokens();

 			for (int j=0; j<folders.length; j++) {

-				addSourceFolder(folders[i], 

+				addSourceFolder(folders[j], 

 				       model.getUnderlyingResource().getProject(), 

 				       result);

 			}

diff --git a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/Component.java b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/Component.java
index a5cb31d..944dbb1 100644
--- a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/Component.java
+++ b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/Component.java
@@ -159,13 +159,13 @@
 	String indent2 = indent + INDENT;

 	String indenta = indent + INDENT+INDENT;

 	writeIfDefined(indenta, writer, "id", id);

-	writeIfDefined(indenta, writer, "label", label);

+	writeIfDefined(indenta, writer, "label", getWritableString(label));

 	writeIfDefined(indenta, writer, "version", version);

-	writeIfDefined(indenta, writer, "provider-name", providerName);

+	writeIfDefined(indenta, writer, "provider-name", getWritableString(providerName));

 	writer.println(">");

 	if (description!=null) {

 		String indent3 = indent2+INDENT;

-		description = description.trim();

+		description = getWritableString(description.trim());

 		writer.println();

 		writer.println(indent2+"<description>");

 		writer.println(indent3+description);

diff --git a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentFragment.java b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentFragment.java
index d167d6a..a50f438 100644
--- a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentFragment.java
+++ b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentFragment.java
@@ -20,7 +20,7 @@
 	}

 	if (getLabel() != null) {

 		writer.println();

-		writer.print(indent2 + "label=\"" + getLabel() + "\"");

+		writer.print(indent2 + "label=\"" + getWritableString(getLabel()) + "\"");

 	}

 	if (getVersion() != null) {

 		writer.println();

diff --git a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentObject.java b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentObject.java
index 2ae0065..85264e1 100644
--- a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentObject.java
+++ b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentObject.java
@@ -67,6 +67,36 @@
 		new Status(IStatus.ERROR, PDEPlugin.getPluginId(), IStatus.OK, message, null);

 	throw new CoreException(status);

 }

+

+public static String getWritableString(String source) {

+	if (source==null) return "";

+	StringBuffer buf = new StringBuffer();

+	for (int i=0; i<source.length(); i++) {

+		char c = source.charAt(i);

+		switch (c) {

+			case '&': 

+				buf.append("&amp;");

+				break;

+			case '<':

+				buf.append("&lt;");

+				break;

+			case '>':

+				buf.append("&gt;");

+				break;

+			case '\'':

+				buf.append("&apos;");

+				break;

+			case '\"':

+				buf.append("&quot;");

+				break;

+			default:

+			buf.append(c);

+			break;

+		}

+	}

+	return buf.toString();

+}

+

 public void write(String indent, PrintWriter writer) {

 }

 }

diff --git a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentPlugin.java b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentPlugin.java
index 188ba03..c7af171 100644
--- a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentPlugin.java
+++ b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentPlugin.java
@@ -20,7 +20,7 @@
 	}

 	if (getLabel() != null) {

 		writer.println();

-		writer.print(indent2 + "label=\"" + getLabel() + "\"");

+		writer.print(indent2 + "label=\"" + getWritableString(getLabel()) + "\"");

 	}

 	if (getVersion() != null) {

 		writer.println();

diff --git a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentURLElement.java b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentURLElement.java
index d16a681..710bcc6 100644
--- a/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentURLElement.java
+++ b/ui/org.eclipse.pde.ui/Eclipse PDE UI/org/eclipse/pde/internal/model/component/ComponentURLElement.java
@@ -61,10 +61,10 @@
 		return;

 	writer.print(indent + "<" + tag);

 	if (label != null) {

-		writer.print(" label=\""+label+"\"");

+		writer.print(" label=\""+getWritableString(label)+"\"");

 	}

 	if (url != null) {

-		writer.print(" url=\"" + url.toString() + "\"");

+		writer.print(" url=\"" + getWritableString(url.toString()) + "\"");

 	}

 	writer.println("/>");

 }