FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Oid formatting keeps throwing segfaults, committing semi implemented … · nodegit/nodegit@f6ec911 · GitHub

Repository navigation

Commit f6ec911

Browse files
committed
Oid formatting keeps throwing segfaults, committing semi implemented code
1 parent b7fb470 commit f6ec911

3 files changed

Lines changed: 27 additions & 5 deletions

File tree

‎example/raw-oid.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ console.log( oid.mkstr('1838CCD') );
88

99
// Test formatting
1010
console.log( oid.mkstr('5f2aa9407f7b3aeb531c621c3358953841ccfc98') );
11-
console.log( oid.fmt() );
11+
console.log( oid.toString(40) );

‎src/oid.cc‎

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ void Oid::Initialize(Handle<Object> target) {
2323
NODE_SET_PROTOTYPE_METHOD(constructor_template, "mkstr", Mkstr);
2424
NODE_SET_PROTOTYPE_METHOD(constructor_template, "mkraw", Mkraw);
2525
NODE_SET_PROTOTYPE_METHOD(constructor_template, "fmt", Fmt);
26+
NODE_SET_PROTOTYPE_METHOD(constructor_template, "toString", ToString);
2627

2728
target->Set(String::NewSymbol("Oid"), constructor_template->GetFunction());
2829
}
@@ -44,9 +45,17 @@ void Oid::Mkraw(const unsigned char *raw) {
4445
}
4546

4647
char* Oid::Fmt() {
47-
char* raw;
48-
git_oid_fmt(raw, &this->oid);
49-
return raw;
48+
char* buffer;
49+
git_oid_fmt(buffer, &this->oid);
50+
51+
return buffer;
52+
}
53+
54+
char* Oid::ToString(size_t length) {
55+
char* buffer;
56+
git_oid_to_string(buffer, length, (const git_oid*)&this->oid);
57+
58+
return buffer;
5059
}
5160

5261
Handle<Value> Oid::New(const Arguments& args) {
@@ -94,4 +103,16 @@ Handle<Value> Oid::Fmt(const Arguments& args) {
94103
return String::New(oid->Fmt());
95104
}
96105

106+
Handle<Value> Oid::ToString(const Arguments& args) {
107+
Oid *oid = ObjectWrap::Unwrap<Oid>(args.This());
108+
109+
HandleScope scope;
110+
111+
if(args.Length() == 0 || !args[0]->IsNumber()) {
112+
return ThrowException(Exception::Error(String::New("Length argument is required and must be a Number.")));
113+
}
114+
115+
return String::New(oid->ToString((size_t)Local<Integer>::Cast(args[0])->Value()));
116+
}
117+
97118
Persistent<FunctionTemplate> Oid::constructor_template;

‎src/oid.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class Oid : public EventEmitter {
2626
char* Fmt();
2727
//void pathfmt(char *str, const git_oid *oid)
2828
//char* allocfmt(const git_oid *oid)
29-
//char* to_string(char *out, size_t n, const git_oid *oid)
29+
char* ToString(size_t length);
3030
//void cpy(git_oid *out, const git_oid *src)
3131
//int cmp(const git_oid *a, const git_oid *b)
3232

@@ -37,6 +37,7 @@ class Oid : public EventEmitter {
3737
static Handle<Value> Mkstr(const Arguments& args);
3838
static Handle<Value> Mkraw(const Arguments& args);
3939
static Handle<Value> Fmt(const Arguments& args);
40+
static Handle<Value> ToString(const Arguments& args);
4041

4142
private:
4243
git_oid oid;

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL