<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_4_subsect_6_thread_42695"  />
<title>rulinux.net - Форум - Development - А почему Qt company такое УГ?</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Форум - Development - А почему Qt company такое УГ?</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re:А почему Qt company такое УГ?</title>
<link>https://rulinux.net/message.php?newsid=42695&amp;page=1#217896</link>
<guid>https://rulinux.net/message.php?newsid=42695&amp;page=1#217896</guid>
<pubDate>Thu, 13 Oct 2016 20:35:45 +0300</pubDate>
<description><![CDATA[<p>А ты у нас молодой розовопопенький? Тогда полезай на трактор. Хотя не, после тебя говно опять вычищать.</p>]]></description>
</item>
<item>
<title>Re:А почему Qt company такое УГ?</title>
<link>https://rulinux.net/message.php?newsid=42695&amp;page=1#217894</link>
<guid>https://rulinux.net/message.php?newsid=42695&amp;page=1#217894</guid>
<pubDate>Thu, 13 Oct 2016 20:28:57 +0300</pubDate>
<description><![CDATA[<p>Сладенькая, поздно в твоем возрасте Кутю на пару с С++ осваивать))) <br /> Катайся на тракторе, не еби мозги)))</p>]]></description>
</item>
<item>
<title>А почему Qt company такое УГ?</title>
<link>https://rulinux.net/message.php?newsid=42695&amp;page=1#217893</link>
<guid>https://rulinux.net/message.php?newsid=42695&amp;page=1#217893</guid>
<pubDate>Thu, 13 Oct 2016 18:13:43 +0300</pubDate>
<description><![CDATA[<p>В общем, мои сладенькие, сей фреймворк решил потыкать палочкой я. Оно и очевидно. GKT уже воняет, а тут вроде плюсцы и всё такое... Но сразу наткнулся на неприятный баг, связанный с QStringLiteral. В общем смотрим код:<br><br> <fieldset><legend>cpp</legend><div class="highlight cpp"><br />
<span class="co2"># &nbsp;define QStringLiteral(str) \<br />
&nbsp; &nbsp; ([]() -&gt; QString { \<br />
&nbsp; &nbsp; &nbsp; &nbsp; enum { Size = sizeof(QT_UNICODE_LITERAL(str))/2 - 1 }; \<br />
&nbsp; &nbsp; &nbsp; &nbsp; static const QStaticStringData&lt;Size&gt; qstring_literal = { \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Q_STATIC_STRING_DATA_HEADER_INITIALIZER(Size), \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; QT_UNICODE_LITERAL(str) }; \<br />
&nbsp; &nbsp; &nbsp; &nbsp; QStringDataPtr holder = { qstring_literal.data_ptr() }; \<br />
&nbsp; &nbsp; &nbsp; &nbsp; const QString qstring_literal_temp(holder); \<br />
&nbsp; &nbsp; &nbsp; &nbsp; return qstring_literal_temp; \<br />
&nbsp; &nbsp; }()) \<br />
&nbsp; &nbsp; /**/</span><br />
&nbsp;</div></fieldset><br><br>Видим, что вся оптимизация сводится к созданию статической переменной qstring_literal для каждой строки. А дальше начинается самое весёлое. Эти перцы взяли, да и тупо заменили все сроки на QStringLiteral. Меня, конечно, спросят. А ололо? А не похуй ли? Но тут начинается веселуха. Посоны и не знали, что куйтя грузит плагинчики через dlopen. И если два разных автора написали два разных плагина для одной программы, то есть вероятность, что какой-то из классов у них будет с одинаковым именем. В общем мну в ахуе, но одинаковые статические переменные конфликтуют между собой, даже если их распихать по плагинам и использовать dlopen. Вероятность этого, конечно, не велика и редко когда реально вылазит, но, блджал, у нас есть uic, который генерит ui_*.h с кучей этих ваших QStringLiteral. Так что не удивляйтесь, если в формочке вдруг вылезли левые названия. Скорее всего дело в этом.<br><br> Но сия проблема, конечно, легко обходится посредством переименования формочек, ну или с -fvisivility=hidden поиграться, как вариант. Но дальше ещё интереснее. Если мы выгрузим плугин, то можем схватить сегфолт по причине того, что где-то используется указатель на этот ваш сраный QStringLiteral. Но, видим, что команда занята поиском таких вот багов уже на протяжении нескольких лет. Что я могу сказать? Каждый дрочит как хочет: <br><br><div class="quote"><pre>git log | grep QStringLiteral | wc -l<br><br>124</pre></div><br><br> Ну а дальше ололо, мои сраные товарищи.<br><br> Один из главных индусов предлагает вообще не выгружать плагины. Пруф <a href="http://lists.qt-project.org/pipermail/development/2016-October/027476.html">http://lists.qt-project.org/pipermail/development/2016-October/027476.html</a> Речь идёт про внутренние плагины Qt, если что. А тут чувак просто охуевает от такого решения <a href="http://lists.qt-project.org/pipermail/development/2016-October/027483.html">http://lists.qt-project.org/pipermail/development/2016-October/027483.html</a> Так что, мои любители подрочить на Qt, попрошу забыть про valgrind. Он не нужен.<br><br><br><br> В общем мну бешено негодует и думает таки написать жалобу Линусу. Ололол, дискас. </p>]]></description>
</item>
</channel>
</rss>