Ignore:
Timestamp:
Aug 5, 2010, 5:13:36 PM (15 years ago)
Author:
[email protected]
Message:

Fixed leak seen on buildbot.

Reviewed by Mark Rowe.

  • runtime/GCActivityCallbackCF.cpp:

(JSC::DefaultGCActivityCallback::DefaultGCActivityCallback):
(JSC::DefaultGCActivityCallback::~DefaultGCActivityCallback):
(JSC::DefaultGCActivityCallback::operator()): Make out timer a RetainPtr,
since anything less would be uncivilized.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/GCActivityCallbackCF.cpp

    r64587 r64800  
    3232#include "Collector.h"
    3333#include "JSLock.h"
     34#include <wtf/RetainPtr.h>
    3435#include <CoreFoundation/CoreFoundation.h>
    3536
     
    4344    static void trigger(CFRunLoopTimerRef, void *info);
    4445
    45     CFRunLoopTimerRef timer;
     46    RetainPtr<CFRunLoopTimerRef> timer;
    4647    CFRunLoopTimerContext context;
    4748};
     
    6364    memset(&d->context, '\0', sizeof(CFRunLoopTimerContext));
    6465    d->context.info = heap;
    65     d->timer = CFRunLoopTimerCreate(0, decade, decade, 0, 0, DefaultGCActivityCallbackPlatformData::trigger, &d->context);
    66     CFRunLoopAddTimer(CFRunLoopGetCurrent(), d->timer, kCFRunLoopCommonModes);
     66    d->timer.adoptCF(CFRunLoopTimerCreate(0, decade, decade, 0, 0, DefaultGCActivityCallbackPlatformData::trigger, &d->context));
     67    CFRunLoopAddTimer(CFRunLoopGetCurrent(), d->timer.get(), kCFRunLoopCommonModes);
    6768}
    6869
    6970DefaultGCActivityCallback::~DefaultGCActivityCallback()
    7071{
    71     CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), d->timer, kCFRunLoopCommonModes);
    72     CFRunLoopTimerInvalidate(d->timer);
     72    CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), d->timer.get(), kCFRunLoopCommonModes);
     73    CFRunLoopTimerInvalidate(d->timer.get());
    7374    d->context.info = 0;
    7475    d->timer = 0;
     
    7778void DefaultGCActivityCallback::operator()()
    7879{
    79     CFRunLoopTimerSetNextFireDate(d->timer, CFAbsoluteTimeGetCurrent() + 2);
     80    CFRunLoopTimerSetNextFireDate(d->timer.get(), CFAbsoluteTimeGetCurrent() + 2);
    8081}
    8182
Note: See TracChangeset for help on using the changeset viewer.