Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGonzalo Paniagua Javier <gonzalo.mono@gmail.com>2005-04-26 08:15:53 +0400
committerGonzalo Paniagua Javier <gonzalo.mono@gmail.com>2005-04-26 08:15:53 +0400
commite7715aa16d26eaf052e2865b557a1f82fb996605 (patch)
tree6e0338ef4d55d87ac53c19612690fdfbb91e55ad /mcs/class/System.Data/Mono.Data.SqlExpressions
parentadb8117d31fd68ee1080a29cc8ac3ec64fe6408c (diff)
2005-04-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* Tokenizer.cs: make it not rely in exceptions being thrown to know that the array is entirely processed. svn path=/trunk/mcs/; revision=43575
Diffstat (limited to 'mcs/class/System.Data/Mono.Data.SqlExpressions')
-rw-r--r--mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog5
-rw-r--r--mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs47
2 files changed, 32 insertions, 20 deletions
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog b/mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog
index 4cc6aba3137..c2effbe8714 100644
--- a/mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog
+++ b/mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * Tokenizer.cs: make it not rely in exceptions being thrown to know that
+ the array is entirely processed.
+
2005-02-10 Atsushi Enomoto <atsushi@ximian.com>
* Comparison.cs : allow comparison between guid and string.
diff --git a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
index b31edf66907..7d0d0f25c5c 100644
--- a/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
+++ b/mcs/class/System.Data/Mono.Data.SqlExpressions/Tokenizer.cs
@@ -98,14 +98,22 @@ namespace Mono.Data.SqlExpressions {
return input [pos + 1];
}
- private void MoveNext() {
+ private bool MoveNext() {
pos++;
+ if (pos >= input.Length)
+ return false;
+
+ return true;
}
- private void SkipWhiteSpace ()
+ private bool SkipWhiteSpace ()
{
- while (Char.IsWhiteSpace (Current ()))
- MoveNext ();
+ while (Char.IsWhiteSpace (Current ())) {
+ if (!MoveNext ())
+ return false;
+ }
+
+ return true;
}
private object ReadNumber ()
@@ -116,7 +124,8 @@ namespace Mono.Data.SqlExpressions {
char next;
while (Char.IsDigit (next = Next ()) || next == '.') {
sb.Append (next);
- MoveNext ();
+ if (!MoveNext ())
+ break;
}
string str = sb.ToString ();
@@ -130,8 +139,11 @@ namespace Mono.Data.SqlExpressions {
private char ProcessEscapes(char c)
{
if (c == '\\') {
- MoveNext();
- c = Next();
+ if (MoveNext())
+ c = Next();
+ else
+ c = '\0';
+
switch (c) {
case 'n':
c = '\n';
@@ -160,8 +172,10 @@ namespace Mono.Data.SqlExpressions {
char next;
while ((next = Next ()) != terminator) {
sb.Append (ProcessEscapes (next));
- MoveNext ();
+ if (!MoveNext ())
+ break;
}
+
MoveNext ();
return sb.ToString ();
@@ -175,7 +189,8 @@ namespace Mono.Data.SqlExpressions {
char next;
while ((next = Next ()) == '_' || Char.IsLetterOrDigit (next) || next == '\\') {
sb.Append (ProcessEscapes (next));
- MoveNext ();
+ if (!MoveNext ())
+ break;
}
return sb.ToString ();
@@ -268,18 +283,10 @@ namespace Mono.Data.SqlExpressions {
*/
public bool advance ()
{
- val = null;
- tok = -1;
-
- try {
- SkipWhiteSpace();
- tok = ParseToken();
- MoveNext();
- return true;
-
- } catch(IndexOutOfRangeException) {
+ if (!SkipWhiteSpace())
return false;
- }
+ tok = ParseToken();
+ return MoveNext ();
}
/** classifies current token.