Пример #1
0
/**
 * remove a element ATTENTION: It has to be ensured, that
 * no other thread can access the elemnt right now (the predecessor 
 * has to be locked)
 */
ConcurrentListElement *removeElement(ConcurrentListElement *element) {
  useElement(element);
  ConcurrentListElement *next = element->nextEntry;

  // is locked
  returnElement(element);
  // Pointer and real content

  log_debug("Remove payload: %p", element->payload);
  free(element->payload);
  log_debug("Remove ID: %p", element->ID);
  free(element->ID);
  log_debug("Remove element: %p", element);
  free(element);
  return next;
}
Пример #2
0
void addCommentWithLine (int errorType, const char * comment, const char * filename, unsigned int lineNumber) {

    errorLinkToFile * newLink = new errorLinkToFile;
    if (! newLink) return;

    if (filename && filename[0] == '\0')
        filename = NULL;

    char * s = copyString(comment);
    char * s2, *s3;

    // Extract real strings...
    while (s2 = strstr(s, "_string")) {
        unsigned long i = 0;
        int ac = 0;

        s3 = s2 + 7;
        int looping = true;
        while (s3[ac] && looping) {
            if (s3[ac] >= '0' && s3[ac] <= '9') {
                i = (i * 10) + s3[ac] - '0';
                if (i >= 65535) {
                    looping = false;
                }
            } else {
                looping = false;
            }
            if (looping) ac ++;
        }
        s3+=ac;
        s2[1] = 0;
        s2[0] = '"';
        s2 = s;
        s = joinStrings(s, returnElement (allSourceStrings, i), "\"", s3);
        delete s2;
    }

    // Extract resource file names ...
    while (s2 = strstr(s, "_file")) {
        unsigned long i = 0;
        int ac = 0;

        s3 = s2 + 7;
        int looping = true;
        while (s3[ac] && looping) {
            if (s3[ac] >= '0' && s3[ac] <= '9') {
                i = (i * 10) + s3[ac] - '0';
                if (i >= 65535) {
                    looping = false;
                }
            } else {
                looping = false;
            }
            if (looping) ac ++;
        }
        s3+=ac;
        s2[1] = 0;
        s2[0] = '\'';
        s2 = s;
        s = joinStrings(s, returnElement (allFileHandles, i), "'", s3);
        delete s2;
    }

    newLink->errorType = errorType;
    newLink->overview = copyString (s);
    newLink->filename = filename ? copyString (filename) : NULL;
    newLink->lineNumber = lineNumber;
    newLink->next = errorList;
    errorList = newLink;

    char * filenameWline;
    if (filename) {
        if (lineNumber) {
            filenameWline = new char[strlen(filename)+15];
            sprintf(filenameWline, "%s: line %d", filename, lineNumber);
        } else {
            filenameWline = copyString(filename);
        }
    } else {
        filenameWline = copyString ("");
    }
    char * after = filename ? joinStrings (" (in ", filenameWline, ")") : copyString ("");
    newLink->fullText = joinStrings (errorTypeStrings[errorType], s, after);

    delete after;
    delete filenameWline;

    numErrors ++;

    compilerCommentsUpdated();
}