WorkerThread::~WorkerThread() { if (result != nullptr) { pmh_free_elements(result); } free(content); }
void *thread_run(void *arg) { threadinfo *ti = (threadinfo *)arg; int i; for (i = 0; i < ti->iterations; i++) { int sleep_ms = (int)get_time() % 100; fprintf(stderr, "%s (iteration %i/%i, sleep %i ms after)\n", ti->name, i+1, ti->iterations, sleep_ms); pmh_element **result; pmh_markdown_to_elements(ti->md_content, pmh_EXT_NONE, &result); pmh_sort_elements_by_pos(result); char *this_results = elements_to_str(result); if (ti->results_str == NULL) ti->results_str = this_results; else { if (strcmp(this_results, ti->results_str) != 0) { fprintf(stderr, "ERROR! Thread %s results differ:\n\n" "1st iteration results:\n%s\n" "this iteration (#%i) results:\n%s\n", ti->name, ti->results_str, i+1, this_results); } free(this_results); } pmh_free_elements(result); usleep(sleep_ms); } return NULL; }
void HGMarkdownHighlighter::threadFinished() { if (parsePending) { this->parse(); return; } if (cached_elements != NULL) pmh_free_elements(cached_elements); cached_elements = workerThread->result; workerThread->result = NULL; this->highlight(); }
void MarkdownHighlighter::threadFinished() { if (parsePending) { this->parse(); return; } if (cached_elements != nullptr) { pmh_free_elements(cached_elements); } cached_elements = workerThread->result; workerThread->result = nullptr; this->highlight(); }
QVector<VElementRegion> VUtils::fetchImageRegionsUsingParser(const QString &p_content) { Q_ASSERT(!p_content.isEmpty()); QVector<VElementRegion> regs; QByteArray ba = p_content.toUtf8(); const char *data = (const char *)ba.data(); int len = ba.size(); pmh_element **result = NULL; char *content = new char[len + 1]; memcpy(content, data, len); content[len] = '\0'; pmh_markdown_to_elements(content, pmh_EXT_NONE, &result); if (!result) { return regs; } pmh_element *elem = result[pmh_IMAGE]; while (elem != NULL) { if (elem->end <= elem->pos) { elem = elem->next; continue; } regs.push_back(VElementRegion(elem->pos, elem->end)); elem = elem->next; } pmh_free_elements(result); return regs; }
WorkerThread::~WorkerThread() { if (result != NULL) pmh_free_elements(result); free(content); }
MarkdownHighlighter::~MarkdownHighlighter() { if (cached_elements != nullptr) { pmh_free_elements(cached_elements); } }