@@ -133,9 +133,8 @@ bool V8SqliteAddin::BindParam(tVariant* params, unsigned count) {
133133
134134 SqliteQuery& query = find->second ;
135135
136- int paramNum = params[1 ].vt == VTYPE_PWSTR ?
137- sqlite3_bind_parameter_index (query, lstringa<100 >{varToTextU (params[1 ])})
138- : getInteger (params[1 ]);
136+ int paramNum =
137+ params[1 ].vt == VTYPE_PWSTR ? sqlite3_bind_parameter_index (query, lstringa<100 >{varToTextU (params[1 ])}) : getInteger (params[1 ]);
139138
140139 if (!paramNum || paramNum > sqlite3_bind_parameter_count (query)) {
141140 return error (u" Неверный параметр запроса" , u" Bad query param" );
@@ -189,16 +188,12 @@ struct ValueTableReceiver : ToTextReceiver {
189188
190189 void addColumnName (ssu name) {
191190 checkColumnForDates (name);
192- lstringu<200 > idName{name};
193-
194- bool first = true ;
195- for (u16symbol *ptr = idName.str (), *end = ptr + idName.length (); ptr < end; ptr++) {
196- if (!(iswalpha (*ptr) || (!first && *ptr >= ' 0' && *ptr <= ' 9' ))) {
197- *ptr = ' _' ;
198- }
199- first = false ;
191+ if (name.find (' \" ' ) != str_pos::badIdx) {
192+ lstringu<200 > idName{e_repl<u16symbol>(name, u" \" " , u" \"\" " )};
193+ vtText << (eeu & u" {" & currentCol & u" ,\" " & idName & u" \" ,{\" Pattern\" },\" " & idName & u" \" ,0}," );
194+ } else {
195+ vtText << (eeu & u" {" & currentCol & u" ,\" " & name & u" \" ,{\" Pattern\" },\" " & name & u" \" ,0}," );
200196 }
201- vtText << (eeu & u" {" & currentCol & u" ,\" " & idName & u" \" ,{\" Pattern\" },\" " & e_repl<u16symbol>(name, u" \" " , u" \"\" " ) & u" \" ,0}," );
202197 currentCol++;
203198 }
204199 void addRow () {
@@ -332,8 +327,8 @@ static bool execQuery(SqliteQuery& query, tVariant& retVal, hashStrMapUIU<int>&
332327 return false ;
333328 }
334329 if (receiver.colCount ) {
335- retVal.vt = VTYPE_PWSTR;
336- retVal.wstrLen = (int )text.length ();
330+ retVal.vt = VTYPE_PWSTR;
331+ retVal.wstrLen = (int )text.length ();
337332 mm->AllocMemory ((void **)&retVal.pwstrVal , (int )(text.length () + 1 ) * 2 );
338333
339334 *text.place (retVal.pwstrVal ) = 0 ;
@@ -361,7 +356,7 @@ bool V8SqliteAddin::ExecQuery(tVariant& retVal, tVariant* params, unsigned count
361356 if (params[2 ].vt != VTYPE_NULL) {
362357 if (params[2 ].vt == VTYPE_PWSTR) {
363358 auto vals = varToTextU (params[2 ]).splitf <std::vector<ssu>>(u" ," , [](ssu& t) { t = t.trimmed (); });
364- for (const auto & v : vals) {
359+ for (const auto & v: vals) {
365360 dates.emplace (v, 0 );
366361 }
367362 } else {
0 commit comments