daily merge RCL_2_4
authorfturovic <frank.turovich@nokia.com>
Mon, 18 Jan 2010 12:02:46 -0600
branchRCL_2_4
changeset 781 8e21d6bb6e90
parent 771 dd82c352e68f (diff)
parent 780 70dea91cab12 (current diff)
child 782 54a289b8cadf
daily merge
--- a/core/com.nokia.carbide.cpp.doc.user/html/release_notes.htm	Fri Jan 15 14:27:54 2010 -0600
+++ b/core/com.nokia.carbide.cpp.doc.user/html/release_notes.htm	Mon Jan 18 12:02:46 2010 -0600
@@ -37,7 +37,9 @@
 <p> See the <a href="hints_tips.htm">Tips &amp; tricks</a> page for more helpful information.</p>
 <h3><a name="whatsNew" id="whatsNew2"></a>What's New in 2.4.0 </h3>
 <p>The following features for Symbian  development are provided within Carbide.c++:</p>
-<ul><li><b>Qt Tools 1.6</b> now supported.</li>
+<ul>
+  <li><span class="style5"><b>IMPORTANT WINSCW COMPILER</b></span> change - the WINSCW compiler 3.2.5 build 487  provides new name mangling to support critical exception handling. Without this change an exception can cause a program or system crash. For more information visit the <a href="http://developer.symbian.org/wiki/index.php/Category:C/C++/WINSCW">WINSCW</a> wiki page.</li>
+  <li><b>Qt Tools 1.6</b> now supported.</li>
   <li>The <b>Run builds concurrently</b> option in the <a href="reference/wnd_build_prefs.htm">Builds</a> preference panel now supports up to 50 concurrent build jobs, up from 4.</li>
 </ul>
 <h4><a name="220" id="21022"></a>2.3.0</h4>
--- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView5.java	Fri Jan 15 14:27:54 2010 -0600
+++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestMMPView5.java	Mon Jan 18 12:02:46 2010 -0600
@@ -520,4 +520,27 @@
 		
 		getView(mmpConfig);
 	}
+	
+	/** In this bug, somehow Carbide reads a *.mk file as an MMP. 
+	 * Whatever the reason, we want to avoid IllegalStateException when
+	 * parsing and rewriting it.
+	 */
+	public void testBug10519() {
+		
+		// The tricky part here is, there is a trailing "\" on a line with only spaces on the next.
+		// We need to fully consume those spaces as part of the mifconv statement.
+		String makefile = 
+				"RESOURCE :\r\n" + 
+				"\r\n" + 
+				"	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \\\r\n" + 
+				"		/c24,8 ..\\Rolodex_icon\\back.svg \\\r\n" + 
+				"    \r\n" + 
+				"					\r\n" + 
+				"FREEZE : do_nothing\r\n" + 
+				"";
+		
+		makeModel(makefile);
+		IMMPView view = getView(mmpConfig);
+		commitTest(view, makefile);
+	}	
 }
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/parser/BaseTokenizer.java	Fri Jan 15 14:27:54 2010 -0600
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/parser/BaseTokenizer.java	Mon Jan 18 12:02:46 2010 -0600
@@ -163,18 +163,14 @@
 		char ch;
 		int start = idx;
 		while ((ch = peek()) != 0) {
-			consumeCatenatedLine();
-			if (isWhitespace(ch))
+			if (isWhitespace(ch)) {
 				get();
-			/*else if (ch == '\\') {
-				int prev = idx;
-				if (!consumeCatenatedLine()) {
-					idx = prev;
+			} else if (ch == '\\') {
+				if (!consumeCatenatedLine(true))
 					break;
-				}
-			}*/
-			else
+			} else {
 				break;
+			}
 		}
 		return start != idx;
 	}
@@ -290,19 +286,22 @@
 	
 	/**
 	 * Consume \\ and EOL for catenated line
+	 * @param addToToken if true, include catenation characters in current token
 	 * @return true if catenation detected and skipped
 	 */
-	protected boolean consumeCatenatedLine() {
+	protected boolean consumeCatenatedLine(boolean addToToken) {
 		if (peek() == '\\') {
 			int prevIdx = idx;
-			skip();
-			if (peek() == '\r') {
-				skip();
-				if (peek() == '\n')
-					skip();
+			if (addToToken) get(); else skip();
+			char ch = peek();
+			if (ch == '\r') {
+				if (addToToken) get(); else skip();
+				if (peek() == '\n') {
+					if (addToToken) get(); else skip();
+				}
 				return true;
-			} else if (peek() == '\n') {
-				skip();
+			} else if (ch == '\n') {
+				if (addToToken) get(); else skip();
 				return true;
 			}
 			idx = prevIdx;
@@ -311,6 +310,14 @@
 	}
 
 	/**
+	 * Consume \\ and EOL for catenated line
+	 * @return true if catenation detected and skipped
+	 */
+	protected boolean consumeCatenatedLine() {
+		return consumeCatenatedLine(false);
+	}
+	
+	/**
 	 * Consume a numeric sequence.  This starts with a number
 	 * and contains other numbers and letters and '.' and ('e' + '-'|'+'). 
 	 * @return true if matched (and skipped), else false (and no idx change)