Coverage Report

Created: 2026-02-26 07:15

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/xpdf-4.06/splash/SplashFontFile.cc
Line
Count
Source
1
//========================================================================
2
//
3
// SplashFontFile.cc
4
//
5
// Copyright 2003-2013 Glyph & Cog, LLC
6
//
7
//========================================================================
8
9
#include <aconf.h>
10
11
#include <stdio.h>
12
#ifndef _WIN32
13
#  include <unistd.h>
14
#endif
15
#include "gmempp.h"
16
#include "GString.h"
17
#include "SplashFontFile.h"
18
#include "SplashFontFileID.h"
19
20
#ifdef VMS
21
#if (__VMS_VER < 70000000)
22
extern "C" int unlink(char *filename);
23
#endif
24
#endif
25
26
//------------------------------------------------------------------------
27
// SplashFontFile
28
//------------------------------------------------------------------------
29
30
SplashFontFile::SplashFontFile(SplashFontFileID *idA,
31
             SplashFontType fontTypeA,
32
#if LOAD_FONTS_FROM_MEM
33
             GString *fontBufA
34
#else
35
             char *fileNameA, GBool deleteFileA
36
#endif
37
4.21k
             ) {
38
4.21k
  id = idA;
39
4.21k
  fontType = fontTypeA;
40
#if LOAD_FONTS_FROM_MEM
41
  fontBuf = fontBufA;
42
#else
43
4.21k
  fileName = new GString(fileNameA);
44
4.21k
  deleteFile = deleteFileA;
45
4.21k
#endif
46
4.21k
  refCnt = 0;
47
4.21k
}
48
49
4.21k
SplashFontFile::~SplashFontFile() {
50
#if LOAD_FONTS_FROM_MEM
51
  delete fontBuf;
52
#else
53
4.21k
  if (deleteFile) {
54
4.21k
    unlink(fileName->getCString());
55
4.21k
  }
56
4.21k
  delete fileName;
57
4.21k
#endif
58
4.21k
  delete id;
59
4.21k
}
60
61
4.66k
void SplashFontFile::incRefCnt() {
62
4.66k
#if MULTITHREADED
63
4.66k
  gAtomicIncrement(&refCnt);
64
#else
65
  ++refCnt;
66
#endif
67
4.66k
}
68
69
4.66k
void SplashFontFile::decRefCnt() {
70
4.66k
  GBool done;
71
72
4.66k
#if MULTITHREADED
73
4.66k
  done = gAtomicDecrement(&refCnt) == 0;
74
#else
75
  done = --refCnt == 0;
76
#endif
77
4.66k
  if (done) {
78
4.21k
    delete this;
79
4.21k
  }
80
4.66k
}