Комментарии 9
по исходному файлу убедиться в наличии проблемы невозможно, опять же из-за макросов.
А сколько макросов в таких проектах как OpenSSL!
Как у вас Java-версия продвигается?
Готова. Тестируем и заворачиваем в красивую упаковку)
А можно в очередь на бета-тест встать?
Напишите нам в поддержку на сайте: www.viva64.com/ru/about-feedback
Вот тогда я подобные статьи, но «тестируем Sping/Tomcat/Gradle» буду еще с большим нетерпением ждать!
Бесплатно всё? Как в коммунизме?
Вот сходу же, первая тернарка — это не ошибка (странно думать, что разработчики языка не в курсе порядка операций, они в man perlop первым же делом дают приоритеты операций и отличия от Си). Он действительно вычитает из конца буфера либо 1 байт, либо размер UTF8. Далее, вычисление в sizeof — очевидно, что по раскрытиям макросов выражение используется и где-то как аргумент, и где-то для sizeof, просто передавая тот же аргумент, и очевидно, что в последнем случае вычисление в sizeof ни на что не влияет.
Насчет XS сходу сложнее, это надо в мануалы закапываться, а они большие :) Но, скорее всего, RETVAL (ведь тоже макрос!) таки действительно по дороге где-то выставляется каким-то другим кодом, а XSRETURN_EMPTY в конце — может быть по единообразию стиля для всех похожих функций, ничего страшного в его недостижимости нет.
Насчет XS сходу сложнее, это надо в мануалы закапываться, а они большие :) Но, скорее всего, RETVAL (ведь тоже макрос!) таки действительно по дороге где-то выставляется каким-то другим кодом, а XSRETURN_EMPTY в конце — может быть по единообразию стиля для всех похожих функций, ничего страшного в его недостижимости нет.
Он действительно вычитает из конца буфера либо 1 байт, либо размер UTF8.
Но каким образом, если тернарный оператор исполняется последним?
Реально он вычитает из конца буфера переменную is_utf8, далее делает сравнение, и в зависимости от его результата берет либо 1 байт, либо размер UTF8. А потом приводит это все к булевому типу, получая тем самым всегда истинное условие.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Perl 5: как в макросах ошибки прятались