0007-clip-unicode.patch 1.61 KB
Newer Older
1
2
3
4
From 01c42149cbdc194644a2f138598029938e0dd447 Mon Sep 17 00:00:00 2001
From: Gabe Goodhart <ghart@us.ibm.com>
Date: Thu, 19 Sep 2024 17:09:57 -0600
Subject: [PATCH] clip unicode
Michael Yang's avatar
Michael Yang committed
5
6
7
8
9

---
 examples/llava/clip.cpp | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

10
diff --git a/examples/llava/clip.cpp b/examples/llava/clip.cpp
11
index b8941c74..3a735f17 100644
12
13
--- a/examples/llava/clip.cpp
+++ b/examples/llava/clip.cpp
14
@@ -40,6 +40,14 @@
15
16
17
18
19
20
21
22
23
24
25
 #include <cinttypes>
 #include <limits>
 
+#if defined(_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#ifndef NOMINMAX
+    #define NOMINMAX
+#endif
+#include <windows.h>
+#endif
+
26
27
28
29
 #define LOG_INF(...) do { fprintf(stdout, __VA_ARGS__); } while (0)
 #define LOG_WRN(...) do { fprintf(stderr, __VA_ARGS__); } while (0)
 #define LOG_ERR(...) do { fprintf(stderr, __VA_ARGS__); } while (0)
@@ -1227,7 +1235,22 @@ struct clip_ctx * clip_model_load(const char * fname, const int verbosity = 1) {
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
             return nullptr;
         }
 
+#ifdef _WIN32
+        int wlen = MultiByteToWideChar(CP_UTF8, 0, fname, -1, NULL, 0);
+        if (!wlen) {
+            return NULL;
+        }
+        wchar_t * wbuf = (wchar_t *) malloc(wlen * sizeof(wchar_t));
+        wlen = MultiByteToWideChar(CP_UTF8, 0, fname, -1, wbuf, wlen);
+        if (!wlen) {
+            free(wbuf);
+            return NULL;
+        }
+        auto fin = std::ifstream(wbuf, std::ios::binary);
+        free(wbuf);
+#else
         auto fin = std::ifstream(fname, std::ios::binary);
+#endif
         if (!fin) {
50
             LOG_ERR("cannot open model file for loading tensors\n");
51
             clip_free(new_clip);
Michael Yang's avatar
Michael Yang committed
52
-- 
53
2.39.3 (Apple Git-146)
Michael Yang's avatar
Michael Yang committed
54