MCPcopy Create free account
hub / github.com/MonaSolutions/MonaServer / readText

Method readText

MonaCore/sources/AMFReader.cpp:45–81  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43}
44
45const char* AMFReader::readText(UInt32& size) {
46 UInt32 reset(0), reference(0);
47 if (_amf3) {
48 reference = packet.position();
49 size = packet.read7BitValue();
50 bool isInline = size & 0x01;
51 size >>= 1;
52 if(!isInline) {
53 if (size >= _stringReferences.size()) {
54 ERROR("AMF3 string reference not found");
55 return NULL;
56 }
57 reset = packet.position();
58 packet.reset(_stringReferences[size]);
59 size = (packet.read7BitValue() >> 1);
60 }
61 } else
62 size = packet.read16();
63
64 if (size > packet.available()) {
65 ERROR("AMF text bad-formed with a ", size, " size exceeding the ", packet.available(), " bytes available");
66 if (reset)
67 packet.reset(reset);
68 return NULL;
69 }
70 const char* text(STR packet.current());
71
72 if (reset)
73 packet.reset(reset);
74 else if(size) { // not record string empty
75 if (reference)
76 _stringReferences.emplace_back(reference);
77 packet.next(size);
78 }
79
80 return text;
81}
82
83UInt8 AMFReader::followingType() {
84

Callers

nothing calls this directly

Calls 7

positionMethod · 0.80
read7BitValueMethod · 0.80
read16Method · 0.80
sizeMethod · 0.45
resetMethod · 0.45
availableMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected