← All posts tagged coding

arrowdodger
coding Ну капец же:
if(cur[0] + cur[1] == '\r' + '\n')
Так и хочется скормить этому коду какой-нибудь гадкий инпут и посмотреть как ему разорвет кучу или стек.
arrowdodger
coding C# Этот код удаляет одну туплу из списка тупл:

foreach (var p in rewrittenChildPairs)
if (p.Item2)
p.Item1.Remove();

Как вам это нравится? Как такое вообще возможно?
arrowdodger
coding klee Вот такой-то байды я точно не ждал. Я даже не представляю как это дебажить теперь.
$php 1.php
ab

<html></html>

$php -dextension=klee.so -dklee.enable=1 1.php
KLEE: output directory = "klee-out-5"
KLEE: WARNING: undefined reference to variable: _CurrentRuneLocale
KLEE: WARNING: undefined reference to function: __assert
KLEE: WARNING: undefined reference to function: __error
KLEE: WARNING: undefined reference to function: __isfinite
KLEE: WARNING: undefined reference to variable: __mb_sb_limit
KLEE: WARNING: undefined reference to variable: __stderrp
KLEE: WARNING: undefined reference to function: fclose
KLEE: WARNING: undefined reference to function: fprintf
KLEE: WARNING: undefined reference to function: getenv
KLEE: WARNING: undefined reference to function: mmap
KLEE: WARNING: undefined reference to function: munmap
KLEE: WARNING: undefined reference to function: printf
KLEE: WARNING: undefined reference to function: siglongjmp
KLEE: WARNING: undefined reference to function: sigsetjmp
KLEE: WARNING: undefined reference to function: sprintf
KLEE: WARNING: undefined reference to function: strcasecmp
KLEE: WARNING: calling external: getenv(34590422144)
KLEE: WARNING: calling external: printf(34720010656)
bb

KLEE: WARNING: unable to write output test case, losing it
<html></html>
KLEE: done: total instructions = 43589
KLEE: done: completed paths = 1
KLEE: done: generated tests = 1
arrowdodger
coding lineage2 Забавно, я только сейчас понял, что корейцы сделали странную вещь в клиенте ладвы:
Ключ от симметричного алгоритма шифрования у них зашит в клиенте, а ключ от асимметричного присылается сервером. А ведь логичнее было бы сделать с точностью до наоборот.
arrowdodger
C++ coding Оказывается, map<char *, T> надо юзать очень осторожно. Особенно в случае, когда ты ключ берешь из string constant. В некоторых конпеляторах (GCC 4.2.1)
char* a="asdasd";
, объявленное в разных модулях имеет разное значение. Как следствие, если сделать map[a], то туда добавляется новое значение, а не достается старое.
Это было дефолтным поведением в MSVC, поэтому я сначала даже не заподозрил подвоха. Зато clang делает все правильно, надо окончательно на него перелезать.
arrowdodger
C++ coding C In C, unlike in C++, empty parenthesis do
not mean "no arguments", they mean "no prototype", which is typically
treated the same way as varargs in calling conventions. To declare
function with no arguments do typedef void (*FP)(void);

Ну нихрена себе новости.
arrowdodger
coding llvm Сижу, читаю доки по llvm и поражаюсь какая это здоровая штука. Чтобы все это разучить и запомнить хрен знает сколько времени уйдет.