Coverage Report

Created: 2026-09-13 07:02

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/imagemagick/coders/bytebuffer-private.h
Line
Count
Source
1
/*
2
  Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization
3
  dedicated to making software imaging solutions freely available.
4
5
  You may not use this file except in compliance with the License.  You may
6
  obtain a copy of the License at
7
8
    https://imagemagick.org/license/
9
10
  Unless required by applicable law or agreed to in writing, software
11
  distributed under the License is distributed on an "AS IS" BASIS,
12
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
  See the License for the specific language governing permissions and
14
  limitations under the License.
15
*/
16
#ifndef MAGICK_BYTE_BUFFER_PRIVATE_H
17
#define MAGICK_BYTE_BUFFER_PRIVATE_H
18
19
#include "MagickCore/blob.h"
20
#include "MagickCore/blob-private.h"
21
22
typedef struct _MagickByteBuffer
23
{
24
  Image
25
    *image;
26
27
  ssize_t
28
    offset,
29
    count;
30
31
  unsigned char
32
    data[MagickMinBufferExtent];
33
} MagickByteBuffer;
34
35
static inline int PeekMagickByteBuffer(MagickByteBuffer *buffer)
36
80.4M
{
37
80.4M
  if ((buffer->offset == buffer->count) && (buffer->offset > 0))
38
39.3k
    {
39
39.3k
      if (buffer->count != (ssize_t) sizeof(buffer->data)-1)
40
37.3k
        return(EOF);
41
1.98k
      buffer->offset=0;
42
1.98k
      buffer->count=0;
43
1.98k
    }
44
80.4M
  if ((buffer->offset == 0) && (buffer->count == 0))
45
32.7k
    {
46
32.7k
      buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1,
47
32.7k
        buffer->data);
48
32.7k
      if (buffer->count < 1)
49
514
        return(EOF);
50
32.7k
    }
51
80.4M
  return((int) buffer->data[buffer->offset]);
52
80.4M
}
Unexecuted instantiation: annotate.c:PeekMagickByteBuffer
pdf.c:PeekMagickByteBuffer
Line
Count
Source
36
9.96M
{
37
9.96M
  if ((buffer->offset == buffer->count) && (buffer->offset > 0))
38
5.69k
    {
39
5.69k
      if (buffer->count != (ssize_t) sizeof(buffer->data)-1)
40
5.42k
        return(EOF);
41
266
      buffer->offset=0;
42
266
      buffer->count=0;
43
266
    }
44
9.96M
  if ((buffer->offset == 0) && (buffer->count == 0))
45
5.37k
    {
46
5.37k
      buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1,
47
5.37k
        buffer->data);
48
5.37k
      if (buffer->count < 1)
49
170
        return(EOF);
50
5.37k
    }
51
9.96M
  return((int) buffer->data[buffer->offset]);
52
9.96M
}
Unexecuted instantiation: ps2.c:PeekMagickByteBuffer
Unexecuted instantiation: ps3.c:PeekMagickByteBuffer
ps.c:PeekMagickByteBuffer
Line
Count
Source
36
70.4M
{
37
70.4M
  if ((buffer->offset == buffer->count) && (buffer->offset > 0))
38
33.6k
    {
39
33.6k
      if (buffer->count != (ssize_t) sizeof(buffer->data)-1)
40
31.9k
        return(EOF);
41
1.72k
      buffer->offset=0;
42
1.72k
      buffer->count=0;
43
1.72k
    }
44
70.4M
  if ((buffer->offset == 0) && (buffer->count == 0))
45
27.4k
    {
46
27.4k
      buffer->count=ReadBlob(buffer->image,sizeof(buffer->data)-1,
47
27.4k
        buffer->data);
48
27.4k
      if (buffer->count < 1)
49
344
        return(EOF);
50
27.4k
    }
51
70.4M
  return((int) buffer->data[buffer->offset]);
52
70.4M
}
Unexecuted instantiation: xps.c:PeekMagickByteBuffer
53
54
static inline int ReadMagickByteBuffer(MagickByteBuffer *buffer)
55
74.9M
{
56
74.9M
  int
57
74.9M
    result;
58
59
74.9M
  result=PeekMagickByteBuffer(buffer);
60
74.9M
  if (result != EOF)
61
74.9M
    buffer->offset++;
62
74.9M
  return(result);
63
74.9M
}
Unexecuted instantiation: annotate.c:ReadMagickByteBuffer
pdf.c:ReadMagickByteBuffer
Line
Count
Source
55
9.96M
{
56
9.96M
  int
57
9.96M
    result;
58
59
9.96M
  result=PeekMagickByteBuffer(buffer);
60
9.96M
  if (result != EOF)
61
9.96M
    buffer->offset++;
62
9.96M
  return(result);
63
9.96M
}
Unexecuted instantiation: ps2.c:ReadMagickByteBuffer
Unexecuted instantiation: ps3.c:ReadMagickByteBuffer
ps.c:ReadMagickByteBuffer
Line
Count
Source
55
65.0M
{
56
65.0M
  int
57
65.0M
    result;
58
59
65.0M
  result=PeekMagickByteBuffer(buffer);
60
65.0M
  if (result != EOF)
61
64.9M
    buffer->offset++;
62
65.0M
  return(result);
63
65.0M
}
Unexecuted instantiation: xps.c:ReadMagickByteBuffer
64
65
static inline char *GetMagickByteBufferDatum(MagickByteBuffer *buffer)
66
50.3k
{
67
50.3k
  ssize_t
68
50.3k
    count,
69
50.3k
    i;
70
71
50.3k
  if (buffer->offset != 0)
72
50.3k
    {
73
50.3k
      i=0;
74
63.6M
      while (buffer->offset < buffer->count)
75
63.5M
        buffer->data[i++]=buffer->data[buffer->offset++];
76
50.3k
      count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1-
77
50.3k
        i),buffer->data+i);
78
50.3k
      buffer->count=i;
79
50.3k
      if (count > 0)
80
1.03k
        buffer->count+=count;
81
50.3k
      buffer->offset=0;
82
50.3k
    }
83
50.3k
  return((char *) buffer->data);
84
50.3k
}
Unexecuted instantiation: annotate.c:GetMagickByteBufferDatum
pdf.c:GetMagickByteBufferDatum
Line
Count
Source
66
12.6k
{
67
12.6k
  ssize_t
68
12.6k
    count,
69
12.6k
    i;
70
71
12.6k
  if (buffer->offset != 0)
72
12.6k
    {
73
12.6k
      i=0;
74
13.8M
      while (buffer->offset < buffer->count)
75
13.8M
        buffer->data[i++]=buffer->data[buffer->offset++];
76
12.6k
      count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1-
77
12.6k
        i),buffer->data+i);
78
12.6k
      buffer->count=i;
79
12.6k
      if (count > 0)
80
154
        buffer->count+=count;
81
12.6k
      buffer->offset=0;
82
12.6k
    }
83
12.6k
  return((char *) buffer->data);
84
12.6k
}
Unexecuted instantiation: ps2.c:GetMagickByteBufferDatum
Unexecuted instantiation: ps3.c:GetMagickByteBufferDatum
ps.c:GetMagickByteBufferDatum
Line
Count
Source
66
37.7k
{
67
37.7k
  ssize_t
68
37.7k
    count,
69
37.7k
    i;
70
71
37.7k
  if (buffer->offset != 0)
72
37.6k
    {
73
37.6k
      i=0;
74
49.8M
      while (buffer->offset < buffer->count)
75
49.7M
        buffer->data[i++]=buffer->data[buffer->offset++];
76
37.6k
      count=ReadBlob(buffer->image,(size_t) ((ssize_t) sizeof(buffer->data)-1-
77
37.6k
        i),buffer->data+i);
78
37.6k
      buffer->count=i;
79
37.6k
      if (count > 0)
80
876
        buffer->count+=count;
81
37.6k
      buffer->offset=0;
82
37.6k
    }
83
37.7k
  return((char *) buffer->data);
84
37.7k
}
Unexecuted instantiation: xps.c:GetMagickByteBufferDatum
85
86
static inline void CheckMagickByteBuffer(MagickByteBuffer *buffer,
87
  const size_t length)
88
15.3M
{
89
15.3M
  if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data))
90
398
    (void) GetMagickByteBufferDatum(buffer);
91
15.3M
}
Unexecuted instantiation: annotate.c:CheckMagickByteBuffer
pdf.c:CheckMagickByteBuffer
Line
Count
Source
88
4.87M
{
89
4.87M
  if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data))
90
134
    (void) GetMagickByteBufferDatum(buffer);
91
4.87M
}
Unexecuted instantiation: ps2.c:CheckMagickByteBuffer
Unexecuted instantiation: ps3.c:CheckMagickByteBuffer
ps.c:CheckMagickByteBuffer
Line
Count
Source
88
10.5M
{
89
10.5M
  if ((buffer->offset+(ssize_t) length) > (ssize_t) sizeof(buffer->data))
90
264
    (void) GetMagickByteBufferDatum(buffer);
91
10.5M
}
Unexecuted instantiation: xps.c:CheckMagickByteBuffer
92
93
static inline MagickBooleanType CompareMagickByteBuffer(MagickByteBuffer *buffer,
94
  const char *p,const size_t length)
95
14.7M
{
96
14.7M
  const char
97
14.7M
    *q;
98
99
14.7M
  CheckMagickByteBuffer(buffer,length);
100
14.7M
  q=(const char *) buffer->data+buffer->offset;
101
14.7M
  if (LocaleNCompare(p,q,length) != 0)
102
14.0M
    return(MagickFalse);
103
752k
  return(MagickTrue);
104
14.7M
}
Unexecuted instantiation: annotate.c:CompareMagickByteBuffer
pdf.c:CompareMagickByteBuffer
Line
Count
Source
95
4.71M
{
96
4.71M
  const char
97
4.71M
    *q;
98
99
4.71M
  CheckMagickByteBuffer(buffer,length);
100
4.71M
  q=(const char *) buffer->data+buffer->offset;
101
4.71M
  if (LocaleNCompare(p,q,length) != 0)
102
4.50M
    return(MagickFalse);
103
214k
  return(MagickTrue);
104
4.71M
}
Unexecuted instantiation: ps2.c:CompareMagickByteBuffer
Unexecuted instantiation: ps3.c:CompareMagickByteBuffer
ps.c:CompareMagickByteBuffer
Line
Count
Source
95
10.0M
{
96
10.0M
  const char
97
10.0M
    *q;
98
99
10.0M
  CheckMagickByteBuffer(buffer,length);
100
10.0M
  q=(const char *) buffer->data+buffer->offset;
101
10.0M
  if (LocaleNCompare(p,q,length) != 0)
102
9.54M
    return(MagickFalse);
103
538k
  return(MagickTrue);
104
10.0M
}
Unexecuted instantiation: xps.c:CompareMagickByteBuffer
105
106
static inline void SkipMagickByteBuffer(MagickByteBuffer *buffer,
107
  const size_t length)
108
586k
{
109
586k
  CheckMagickByteBuffer(buffer,length);
110
586k
  if ((buffer->offset+(ssize_t) length) < buffer->count)
111
584k
    buffer->offset+=(ssize_t) length;
112
586k
}
Unexecuted instantiation: annotate.c:SkipMagickByteBuffer
pdf.c:SkipMagickByteBuffer
Line
Count
Source
108
162k
{
109
162k
  CheckMagickByteBuffer(buffer,length);
110
162k
  if ((buffer->offset+(ssize_t) length) < buffer->count)
111
162k
    buffer->offset+=(ssize_t) length;
112
162k
}
Unexecuted instantiation: ps2.c:SkipMagickByteBuffer
Unexecuted instantiation: ps3.c:SkipMagickByteBuffer
ps.c:SkipMagickByteBuffer
Line
Count
Source
108
423k
{
109
423k
  CheckMagickByteBuffer(buffer,length);
110
423k
  if ((buffer->offset+(ssize_t) length) < buffer->count)
111
422k
    buffer->offset+=(ssize_t) length;
112
423k
}
Unexecuted instantiation: xps.c:SkipMagickByteBuffer
113
114
static inline MagickBooleanType SkipMagickByteBufferUntilNewline(
115
  MagickByteBuffer *buffer)
116
7.95k
{
117
7.95k
  int
118
7.95k
    c;
119
120
7.95k
  c=ReadMagickByteBuffer(buffer);
121
2.98M
  while ((c != '\n') && (c != '\r'))
122
2.97M
  {
123
2.97M
    c=ReadMagickByteBuffer(buffer);
124
2.97M
    if (c == EOF)
125
286
      return(MagickFalse);
126
2.97M
  }
127
7.66k
  return(MagickTrue);
128
7.95k
}
Unexecuted instantiation: annotate.c:SkipMagickByteBufferUntilNewline
Unexecuted instantiation: pdf.c:SkipMagickByteBufferUntilNewline
Unexecuted instantiation: ps2.c:SkipMagickByteBufferUntilNewline
Unexecuted instantiation: ps3.c:SkipMagickByteBufferUntilNewline
ps.c:SkipMagickByteBufferUntilNewline
Line
Count
Source
116
7.95k
{
117
7.95k
  int
118
7.95k
    c;
119
120
7.95k
  c=ReadMagickByteBuffer(buffer);
121
2.98M
  while ((c != '\n') && (c != '\r'))
122
2.97M
  {
123
2.97M
    c=ReadMagickByteBuffer(buffer);
124
2.97M
    if (c == EOF)
125
286
      return(MagickFalse);
126
2.97M
  }
127
7.66k
  return(MagickTrue);
128
7.95k
}
Unexecuted instantiation: xps.c:SkipMagickByteBufferUntilNewline
129
130
#endif