- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
<? die;
if($_GET['tn'])
{
if(($i = $conf['settings'][$s = "{$arg['modpath']}=>img"]) && ($img = explode(",", $i))){ $tn = array_combine($img, $img); }else{
$tn = array($_GET['tn']=>preg_replace('/[^0-9a-z_]/', '', $_GET['tn']));
} $sql = "SELECT `". mpquot($_GET['fn'] ? $_GET['fn'] : "img"). "` FROM {$conf['db']['prefix']}{$arg['modpath']}_{$tn[$_GET['tn']]} WHERE id=".(int)$_GET['id'];
$file_name = mpopendir("include")."/".($fn = mpql(mpqw($sql), 0, ($_GET['fn'] ? $_GET['fn'] : "img")));
if(!array_search(array_pop(explode('.', $file_name)), array(1=>"jpg", "jpeg", "png", "gif"))){
$file_name = mpopendir("img/ext/". array_pop(explode('.', $file_name)). ".png");
}
}else{
$file_name = mpopendir("modules/{$arg['modpath']}/img/". basename($_GET['']));
} header ("Content-type: image/". array_pop(explode('.', $file_name)));
echo mprs($file_name, $_GET['w'], $_GET['h'], $_GET['c']);
?>
Stallman 20.01.2015 18:55 # +6
Stallman 20.01.2015 18:56 # 0
Это ублюдочная ЖИРаф CMS? Их еще не расстреляли?
deconf 25.01.2015 20:26 # −11
bormand 25.01.2015 21:04 # 0
лицензий GPL
bormand 25.01.2015 21:05 # +2
bormand 25.01.2015 21:13 # +4
Добавена функция gvk gvk... прямо просится на govnokod...
roman-kashitsyn 27.01.2015 10:47 # +1
bormand 27.01.2015 11:50 # 0
Зато замена OR на AND в джвух запросах каким-то образом связана с её появлением... Неспроста же всё это в одном коммите...
guest 20.01.2015 22:23 # +4
в бейсике - kill.
Можно только догадываться, как жесток процессор и какие страсти творятся в ОЗУ .
guest 23.01.2015 19:17 # 0
bormand 23.01.2015 19:25 # 0
guest 23.01.2015 19:27 # 0
bormand 23.01.2015 19:39 # 0
Про потокобезопасность GetProcAddress ничего не нашел, но т.к. он ничего не меняет, а только читает пару структурок - скорее всего можно дергать из любых тредов в любое время.
guest 23.01.2015 19:41 # 0
bormand 23.01.2015 19:43 # 0
guest 23.01.2015 19:45 # 0
bormand 23.01.2015 19:50 # 0
Перед тобой четыре стула:
1) Сделать переменную s thread local (именно так поступили в сишной либе с функциями, подобными твоей). Но хрен знает, умеет ли делфи их делать. Я не спец по ней.
2) Выделять память под строку явно, копировать в нее данные, а на вызывающей стороне юзать и освобождать (здесь может быть проблемка, если делфя даёт каждой дллке свою кучу).
3) Выделять память на вызывающей стороне, а в функцию передавать указатель на буфер и его размер (как во многих WinAPI'шных функциях).
4) Тупо вернуть string. Если делфя умеет их передавать между dll'ками, конечно.
LispGovno 23.01.2015 19:53 # 0
guest 23.01.2015 19:58 # 0
Я его боюсь. Будучи подключённым, он зачастую становится причиной экзотических багов. Компоненты его не все любят. Хотя, может, я что-то делаю не так? Хз.
guest 23.01.2015 19:59 # 0
deconf 27.01.2015 09:45 # −13
guest 23.01.2015 19:53 # 0
да это ж ThreadVar! каждый поток получит свою копию переменной! какой же я олух, ей-богу. Спасибо!.. ;)
guest 23.01.2015 21:05 # 0
3.14159265 23.01.2015 19:54 # −10
Возьму TlsSetValue ядрёны, схороню строки шарёны.
guest 23.01.2015 19:56 # 0
3.14159265 23.01.2015 19:57 # −15
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686991(v=vs.85).aspx
guest 30.01.2015 22:51 # 0
[code]
function test:pwidestring;stdcall;
var
str:widestring;
begin
str:='Тестовая строчка!';
result:=@str[1];
end;
]
guest 31.01.2015 00:31 # −9
░░░░░░░░░░░▄▄▄▄▄
░░░░░░░▄▄█████████▄▄
░░░░▄▀▀▀▀█▀▀▀▀▀▀█████▄
░░▄██████░░░░░░░░░░░▀██
░▐██████▌░░░░░░░░░░░░░▐▌
░███████▌░░░░░░░░░░░░░░█
▐████████░░░░░░░░░░░░░░░█
▐██████▌░░░░░▄▀▀▀▀▀▄░▀░▄▄▌
░█▀▀███▀░░░░░░▄▀█▀░░░▐▄▄▄▌
▐░▌▀▄░░░░░░░░░░▄▄▄▀░░░▌▀░▌
░▌▐░░▌░░░░░░░░░░░▀░░░░▐░▐
░▐░▀▄▐░░░░░░░░░░░▌▌░▄▄░▐░▌
░░▀█░▄▀░░░░░░░░░▐░▐▄▄▄▄▀▐
░░░▌▀░▐░░░░░░░░▄▀░░▀▀▀▀░▌
░░░▐░░░░░░░░░▌░░░▄▀▀▀▀▄▐
░░░▌░░░░░░░░░▐░░░░░▄▄░░▌
░░█▀▄░░░▐░▐░░░░░░░░░░░█
░█░█░▀▀▄░▌░█░░░▀▀▄▄▄▄▀
█░░░▀▄░░▀▀▄▄█░░░░░▄▀
░░░░░░▀▄░░░░▀▀▄▄▄▀▐
█░░░░░░░▀▄░░░░░▐░▌▐
░█░░░░░░░░▀▄░░░▌░▐▌▐
░░█░░░░░░░░░█░▐░▄▄▌░█▀▄
░░░█░░░░░░░░░█▌▐░▄▐░░▀▄▀▀▄▄
░░░░█░░░░░░░░░▀▄░░▐░░░▀▄░░░▀▀▄▄
░░░░░▀▄░▄▀█░░░░░█░░▌░░░░▀▄░░░░░█
guest 31.01.2015 00:37 # −9
guest 31.01.2015 01:14 # −10
guest 31.01.2015 01:22 # −10
deconf 31.01.2015 11:40 # −12
guest 31.01.2015 14:25 # −6
deconf 31.01.2015 17:31 # −13
3.14159265 31.01.2015 17:37 # −15
deconf 31.01.2015 17:41 # −15
kegdan 31.01.2015 17:43 # −14
deconf 31.01.2015 17:50 # −16
kegdan 31.01.2015 17:51 # −13
guest 31.01.2015 17:53 # −9
guest 31.01.2015 17:44 # −9
deconf 31.01.2015 17:50 # −14
bormand 31.01.2015 09:36 # 0
Нет конечно. Ссылки на локальные переменные нельзя возвращать.
kegdan 31.01.2015 10:40 # −9
inkanus-gray 31.01.2015 11:07 # 0
Забавно, но @str — это ссылка на локальную переменную (на стек), а @str[1] — это ссылка на кучу, т. е. не на локальную переменную, а туда, где выделил память конструктор pwidestring.
bormand 31.01.2015 11:15 # 0
kegdan 31.01.2015 11:57 # −11
guest 31.01.2015 14:36 # 0
guest 31.01.2015 17:49 # 0