X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=libexfat%2Flookup.c;h=4b27cc54e2679b201080b4c3ffa901147779309f;hb=914023217c196c0831fe3295d9d8c7176b7e3609;hp=51915e630ec3ea87cdcd8c7c2e2beb83570603f7;hpb=a3cab139f9818e8235dd26b5fef535dffced5f8d;p=sven%2Ffuse-exfat.git

diff --git a/libexfat/lookup.c b/libexfat/lookup.c
index 51915e6..4b27cc5 100644
--- a/libexfat/lookup.c
+++ b/libexfat/lookup.c
@@ -3,7 +3,7 @@
 	exFAT file system implementation library.
 
 	Free exFAT implementation.
-	Copyright (C) 2010-2014  Andrew Nayenko
+	Copyright (C) 2010-2017  Andrew Nayenko
 
 	This program is free software; you can redistribute it and/or modify
 	it under the terms of the GNU General Public License as published by
@@ -61,10 +61,7 @@ struct exfat_node* exfat_readdir(struct exfat* ef, struct exfat_iterator* it)
 
 static int compare_char(struct exfat* ef, uint16_t a, uint16_t b)
 {
-	if (a >= ef->upcase_chars || b >= ef->upcase_chars)
-		return (int) a - (int) b;
-
-	return (int) le16_to_cpu(ef->upcase[a]) - (int) le16_to_cpu(ef->upcase[b]);
+	return (int) ef->upcase[a] - (int) ef->upcase[b];
 }
 
 static int compare_name(struct exfat* ef, const le16_t* a, const le16_t* b)
@@ -89,7 +86,7 @@ static int lookup_name(struct exfat* ef, struct exfat_node* parent,
 
 	*node = NULL;
 
-	rc = utf8_to_utf16(buffer, name, EXFAT_NAME_MAX, n);
+	rc = utf8_to_utf16(buffer, name, EXFAT_NAME_MAX + 1, n);
 	if (rc != 0)
 		return rc;
 
@@ -197,7 +194,7 @@ int exfat_split(struct exfat* ef, struct exfat_node** parent,
 				exfat_put_node(ef, *parent);
 				return -ENOENT;
 			}
-			rc = utf8_to_utf16(name, p, EXFAT_NAME_MAX, n);
+			rc = utf8_to_utf16(name, p, EXFAT_NAME_MAX + 1, n);
 			if (rc != 0)
 			{
 				exfat_put_node(ef, *parent);