tools/jprof/strset.cpp
author Mantaroh Yoshinaga <mantaroh@gmail.com>
Fri, 13 Oct 2017 09:46:39 +0900
changeset 385979 0466471b9f67aa6a60bf3fb98515532e8a53095d
parent 94475 f4157e8c410708d76703f19e4dfb61859bfe32d8
child 448947 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1185236 - Shorten print job name when GTK version is older than 3.18.2. r=karlt Since GTK 3.18.2, GTK allows setting job name with more than 255 bytes. As result, CUPS received the IPP error. (RFC 2911, Section 4.3.1) This patch will shorten print job name, if runtime GTK version is older than 3.18.2. MozReview-Commit-ID: EfB87Bvo6hX

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "strset.h"
#include <malloc.h>
#include <string.h>

StrSet::StrSet()
{
    strings = 0;
    numstrings = 0;
}

void StrSet::add(const char* s)
{
    if (strings) {
	strings = (char**) realloc(strings, (numstrings + 1) * sizeof(char*));
    } else {
	strings = (char**) malloc(sizeof(char*));
    }
    strings[numstrings] = strdup(s);
    numstrings++;
}

int StrSet::contains(const char* s)
{
    char** sp = strings;
    int i = numstrings;

    while (--i >= 0) {
	char *ss = *sp++;
	if (ss[0] == s[0]) {
	    if (strcmp(ss, s) == 0) {
		return 1;
	    }
	}
    }
    return 0;
}